示例#1
0
    void SetActionList(SimpleChatLoader.ChatActionBox box, SerializedProperty actinlist)
    {
        Dictionary <string, Transform> Characters = new Dictionary <string, Transform>();

        foreach (SimpleChatLoader.StoryCharacter stc in box.CharacterList)
        {
            Transform t = transform.parent.Find(stc.Root);
            if (t == null && transform.parent.name.CompareTo(stc.Root) == 0)
            {
                t = transform.parent;
            }
            if (t == null)
            {
                EditorGUILayout.HelpBox("找不到 " + stc.Root + " ,请检查动画名称是否和物件对应!", MessageType.Error);
            }

            Characters.Add(stc.CharacterID, t);
        }

        actinlist.ClearArray();
        actinlist.arraySize = box.ActionList.Count;
        for (int j = 0; j < actinlist.arraySize; j++)
        {
            SerializedProperty talks = actinlist.GetArrayElementAtIndex(j);

            string[] text = (string[])box.ActionList[j];
            talks.FindPropertyRelative("character").objectReferenceValue = Characters[text[0]];
            talks.FindPropertyRelative("talkstring").stringValue         = text[1];
        }

        Debug.Log("导入完成!");
        SaveProperties();
    }
示例#2
0
    //自定义检视面板
    public override void OnInspectorGUI()
    {
        EditorGUILayout.HelpBox("播放故事脚本的工具。", MessageType.Info);
        element.Update();

        //状态列表标题
        GUILayout.Label("状态列表: ", EditorStyles.largeLabel);

        //状态列表内容
        for (int i = 0; i < dolist.arraySize; i++)
        {
            EditorGUI.indentLevel = 0;
            EditorGUILayout.BeginVertical("box");
            EditorGUILayout.BeginHorizontal();
            SerializedProperty statedo = dolist.GetArrayElementAtIndex(i);
            GUILayout.Label("  状态ID");
            EditorGUILayout.PropertyField(statedo.FindPropertyRelative("StateID"), pointContent);
            //EditorGUILayout.PropertyField(action.FindPropertyRelative("ActionList"), pointContent);
            GUILayout.Label("     执行命令");
            EditorGUILayout.PropertyField(statedo.FindPropertyRelative("NextDo"), pointContent);
            if (statedo.FindPropertyRelative("NextDo").enumValueIndex == 2)
            {
                EditorGUILayout.PropertyField(element.FindProperty("jumpnum"), pointContent, GUILayout.Width(50));
                EditorGUILayout.Space();
            }
            else if (statedo.FindPropertyRelative("NextDo").enumValueIndex == 3)
            {
                EditorGUILayout.PropertyField(element.FindProperty("sceneName"), pointContent, GUILayout.Width(50));
                EditorGUILayout.Space();
            }

            if (GUILayout.Button(deleteContent, EditorStyles.miniButton, buttonWidth))
            {
                dolist.DeleteArrayElementAtIndex(i);
                SaveProperties();
                ChangeshowActionList();
                return;
            }
            EditorGUILayout.EndHorizontal();

            //状态列表内的字幕列表
            //导入文本
            TextAsset          ta        = EditorGUILayout.ObjectField("  导入文本", null, typeof(TextAsset), false) as TextAsset;
            SerializedProperty actinlist = statedo.FindPropertyRelative("talks");
            showActionList[i] = EditorGUILayout.Foldout(showActionList[i], "  字幕列表: " + actinlist.arraySize + "个", true);

            if (ta != null)
            {
                SimpleChatLoader loader            = new SimpleChatLoader();
                SimpleChatLoader.ChatActionBox box = loader.LoadStory(ta.text);

                SetActionList(box, actinlist);

                loader = null;
                return;
            }
            if (showActionList[i])
            {
                for (int j = 0; j < actinlist.arraySize; j++)
                {
                    EditorGUILayout.BeginHorizontal("box");
                    SerializedProperty talks = actinlist.GetArrayElementAtIndex(j);
                    EditorGUILayout.PropertyField(talks.FindPropertyRelative("character"), pointContent, GUILayout.Width(120f));
                    talks.FindPropertyRelative("talkstring").stringValue = EditorGUILayout.TextArea(talks.FindPropertyRelative("talkstring").stringValue);
                    if (GUILayout.Button(deleteAniContent, EditorStyles.miniButton, GUILayout.Width(20f)))
                    {
                        actinlist.DeleteArrayElementAtIndex(j);
                        SaveProperties();
                        return;
                    }
                    EditorGUILayout.EndHorizontal();
                }
                //添加动画按钮
                EditorGUILayout.BeginHorizontal();
                GUILayout.Label("");
                if (GUILayout.Button(insertAniContent, EditorStyles.miniButton, GUILayout.MinWidth(80f), GUILayout.MaxWidth(200f)))
                {
                    actinlist.InsertArrayElementAtIndex(actinlist.arraySize);
                    SaveProperties();
                    return;
                }
                GUILayout.Label("");
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.EndFadeGroup();
            }
            EditorGUILayout.EndVertical();
        }
        EditorGUILayout.Space();
        if (GUILayout.Button(insertContent))
        {
            dolist.InsertArrayElementAtIndex(dolist.arraySize);
            SaveProperties();
            ChangeshowActionList();
            return;
        }
        SaveProperties();
    }