コード例 #1
0
    // Start is called before the first frame update

    // Testing out possibility of automatically parsing dialogue
    // TODO define structure for dialogue and parse into this script
    private void OnValidate()
    {
        DialogueEditor.EditableConversation ec = nPCConversation.DeserializeForEditor();
        for (int i = 0; i < ec.SpeechNodes.Count; i++)
        {
            ec.SpeechNodes[i].Text = i + " success!";
        }
        nPCConversation.Serialize(ec);
    }
コード例 #2
0
        private void Save(bool manual = false)
        {
            if (CurrentAsset != null)
            {
                EditableConversation conversation = new EditableConversation();

                // Prepare each node for serialization
                for (int i = 0; i < uiNodes.Count; i++)
                {
                    uiNodes[i].Info.PrepareForSerialization(CurrentAsset);
                }

                // Now that each node has been prepared for serialization:
                // - Register the UIDs of their parents/children
                // - Add it to the conversation
                for (int i = 0; i < uiNodes.Count; i++)
                {
                    uiNodes[i].Info.RegisterUIDs();

                    if (uiNodes[i] is UISpeechNode)
                    {
                        conversation.SpeechNodes.Add((uiNodes[i] as UISpeechNode).SpeechNode);
                    }
                    else if (uiNodes[i] is UIOptionNode)
                    {
                        conversation.Options.Add((uiNodes[i] as UIOptionNode).OptionNode);
                    }
                }

                // Serialize
                CurrentAsset.Serialize(conversation);

                // Null / clear everything. We aren't pointing to it anymore.
                if (!manual)
                {
                    CurrentAsset = null;
                    while (uiNodes.Count != 0)
                    {
                        uiNodes.RemoveAt(0);
                    }
                    CurrentlySelectedNode = null;
                }

#if UNITY_EDITOR
                if (!Application.isPlaying)
                {
                    UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
                }
#endif
            }
        }