示例#1
0
        public void DrawGUI()
        {
            BTUndo.CheckUndo(this, "NodeBlackboard Inspector");
            GUIStyle titleStyle = new GUIStyle("label");

            titleStyle.alignment = TextAnchor.MiddleCenter;
            GUILayout.Label("Tree Blackboard", titleStyle);
            GUI.backgroundColor = new Color(0.8f, 0.8f, 1);
            if (GUILayout.Button("AddData", GUILayout.ExpandWidth(true), GUILayout.Height(30)))
            {
                var menu = new UnityEditor.GenericMenu();
                menu.AddItem(new GUIContent("bool"), false, ContextNew, false);
                menu.AddItem(new GUIContent("float"), false, ContextNew, 0.2f);
                menu.AddItem(new GUIContent("int"), false, ContextNew, 1);
                menu.AddItem(new GUIContent("string"), false, ContextNew, "some string");
                menu.AddItem(new GUIContent("Vector2"), false, ContextNew, Vector2.zero);
                menu.AddItem(new GUIContent("Vector3"), false, ContextNew, Vector3.zero);
                menu.AddItem(new GUIContent("Color"), false, ContextNew, Color.white);
                menu.AddItem(new GUIContent("GameObject"), false, ContextNew, mRootObj);
                menu.AddItem(new GUIContent("List<GameObject>"), false, ContextNew, new List <GameObject>());
                menu.AddItem(new GUIContent("Component"), false, ContextNew, mRootObj.transform);
                menu.AddItem(new GUIContent("Transform"), false, ContextNew, mRootObj.transform);
                menu.ShowAsContext();
            }
            GUILayout.BeginHorizontal();
            GUI.backgroundColor = Color.yellow;
            GUILayout.Label("Key", GUILayout.MaxWidth(100), GUILayout.ExpandWidth(true));
            GUILayout.Label("Value", GUILayout.MaxWidth(100), GUILayout.ExpandWidth(true));
            GUI.backgroundColor = Color.white;
            GUILayout.EndHorizontal();

            for (int i = 0; i < Data.Count; i++)
            {
                FValue v = Data[i];
                if (v != null)
                {
                    GUILayout.BeginHorizontal();
                    v.DrawGUI();
                    GUI.backgroundColor = new Color(1f, 0.6f, 0.6f);
                    if (GUILayout.Button("X", GUILayout.MaxWidth(20)))
                    {
                        DelData(v.GetKey());
                    }
                    GUI.backgroundColor = new Color(0.7f, 0.7f, 0.7f);
                    GUILayout.EndHorizontal();
                }
            }

            GUI.backgroundColor = new Color(0.8f, 0.8f, 1);
            if (GUILayout.Button("ClearNullData", GUILayout.ExpandWidth(true), GUILayout.Height(30)))
            {
                ClearNullData();
            }
        }
示例#2
0
 public void DelData(string key)
 {
     for (int i = 0; i < Data.Count; i++)
     {
         if (Data[i].GetKey() == key)
         {
             FValue v = Data[i];
             Data.RemoveAt(i);
             UnityEngine.Object.DestroyImmediate(v);
             break;
         }
     }
 }
示例#3
0
 public void GetData <TVal>(ref TVal v) where TVal : FValue, new()
 {
     if (v != null)
     {
         if (!string.IsNullOrEmpty(v.GetKey()))
         {
             FValue s = GetData <FValue>(v.GetKey());
             v = s != null ? (TVal)s : v;
         }
     }
     else
     {
         v = NodeFactory.CreateFValueObject <TVal>(transform, string.Empty);
     }
 }
示例#4
0
        public void   SetKey <T>(string key) where T : FValue
        {
            if (this.key == key)
            {
                return;
            }
            this.key = key;
            T f = board.GetData <T>(key);

            data = (T)f;
            if (data != null)
            {
                data.SetKey(key);
                this.SetValue(data.GetValue(), false);
            }
        }
示例#5
0
 public TVal GetData <TVal>(string key) where TVal : FValue
 {
     for (int i = 0; i < Data.Count; i++)
     {
         if (Data[i].GetKey() == key)
         {
             FValue s = Data[i];
             if (s != null)
             {
                 if (s is TVal)
                 {
                     return((TVal)(s != null ? s : null));
                 }
             }
             break;
         }
     }
     return(default(TVal));
 }
示例#6
0
        public bool AddData(string key, object value)
        {
            if (string.IsNullOrEmpty(key))
            {
                return(false);
            }
            if (value == null)
            {
                return(false);
            }
            FValue v = null;

            if (value.GetType() == typeof(bool))
            {
                v = NodeFactory.CreateFValueObject <FBool>(transform, key, value);
            }
            if (value.GetType() == typeof(int))
            {
                v = NodeFactory.CreateFValueObject <FInt>(transform, key, value);
            }
            if (value.GetType() == typeof(Color))
            {
                v = NodeFactory.CreateFValueObject <FColor>(transform, key, value);
            }
            if (value.GetType() == typeof(float))
            {
                v = NodeFactory.CreateFValueObject <FFloat>(transform, key, value);
            }
            if (value.GetType() == typeof(GameObject))
            {
                v = NodeFactory.CreateFValueObject <FGameObject>(transform, key, value);
            }
            if (value.GetType() == typeof(List <GameObject>))
            {
                v = NodeFactory.CreateFValueObject <FGameObjectList>(transform, key, value);
            }
            if (value.GetType() == typeof(Component))
            {
                v = NodeFactory.CreateFValueObject <FComponent>(transform, key, value);
            }
            if (value.GetType() == typeof(string))
            {
                v = NodeFactory.CreateFValueObject <FString>(transform, key, value);
            }
            if (value.GetType() == typeof(Vector3))
            {
                v = NodeFactory.CreateFValueObject <FVector3>(transform, key, value);
            }
            if (value.GetType() == typeof(Vector2))
            {
                v = NodeFactory.CreateFValueObject <FVector2>(transform, key, value);
            }
            if (value.GetType() == typeof(Transform))
            {
                v = NodeFactory.CreateFValueObject <FTransform>(transform, key, value);
            }
            if (v != null)
            {
                Data.Add(v);
                return(true);
            }
            else
            {
                return(false);
            }
        }