예제 #1
0
    public void RemoveAtMonos(MyLuaBehaviour refer, int index)
    {
        List <UnityEngine.Object> monos = new List <UnityEngine.Object>(refer.monos);

        monos.RemoveAt(index);
        refer.monos = monos.ToArray();
    }
예제 #2
0
    public void AddMonoItem(MyLuaBehaviour item, int i, UnityEngine.Object obj)
    {
        List <UnityEngine.Object> monos = null;

        if (item.monos != null)
        {
            monos = new List <UnityEngine.Object>(item.monos);
        }
        else
        {
            monos = new List <UnityEngine.Object>();
        }

        if (i < 0)
        {
            monos.Add(obj);
        }
        else
        {
            while (monos.Count <= i)
            {
                monos.Add(null);
            }
            monos[i] = obj;
        }
        item.monos = monos.ToArray();

        //item.moniItemIndexs
    }
예제 #3
0
 public UnityEngine.Object GetMonos(MyLuaBehaviour refer, int index)
 {
     if (index >= 0 && index < refer.monos.Length)
     {
         return(refer.monos[index]);
     }
     return(null);
 }
예제 #4
0
    public void SetMonoItemName(MyLuaBehaviour monoItem, int i)
    {
        while (monoItem.monoItemNames.Count <= i)
        {
            monoItem.monoItemNames.Add(null);
        }
        Rect rect = GUILayoutUtility.GetLastRect();

        rect.xMin  = 30;
        rect.width = 70;
        monoItem.monoItemNames[i] = EditorGUI.TextField(rect, monoItem.monoItemNames[i]);
        GUILayout.Space(70);
    }
예제 #5
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.LabelField("Mono Item List", GUILayout.Width(200));
        MyLuaBehaviour luaBehaviour = target as MyLuaBehaviour;

        Undo.RecordObject(target, "F");
        if (luaBehaviour.monos != null)
        {
            for (int i = 0; i < luaBehaviour.monos.Length; i++)
            {
                List <Type> allowTypes = new List <Type>()
                {
                    typeof(GameObject)
                };
                int selectIndex = 0;

                EditorGUILayout.BeginHorizontal();
                GUILayout.Label((i + 1).ToString(), GUILayout.Width(20));
                SetMonoItemName(luaBehaviour, i);
                UnityEngine.Object obj = GetMonos(luaBehaviour, i);
                if (obj != null)
                {
                    Type       currentType = obj.GetType();
                    GameObject go          = null;
                    if (currentType == typeof(GameObject))
                    {
                        go = (GameObject)obj;
                    }
                    else if (currentType.IsSubclassOf(typeof(Component)))
                    {
                        go = ((Component)obj).gameObject;
                    }
                    Component[] cs = null;

                    if (go != null)
                    {
                        cs = go.GetComponents <Component>();

                        for (int j = 0; j < cs.Length; j++)
                        {
                            allowTypes.Add(cs[j].GetType());
                            if (obj == cs[j])
                            {
                                selectIndex = j + 1;
                            }
                        }

                        selectIndex = EditorGUILayout.Popup(selectIndex, ConvertTypeArrayToStringArray(allowTypes));
                        if (selectIndex == 0)
                        {
                            AddMonoItem(luaBehaviour, i, go);     //temp.monos[i] = go;
                        }
                        else
                        {
                            AddMonoItem(luaBehaviour, i, cs[selectIndex - 1]);     //temp.monos[i] = cs[selectIndex - 1];
                        }
                    }

                    if (luaBehaviour.monoItemNames[i] == "")
                    {
                        luaBehaviour.monoItemNames[i] = obj.name;
                    }
                }

                AddMonoItem(luaBehaviour, i, EditorGUILayout.ObjectField(GetMonos(luaBehaviour, i), typeof(UnityEngine.Object), true));

                var objfind = GetMonos(luaBehaviour, i);
                if (luaBehaviour.monoItemNames.Count > i && luaBehaviour.monoItemNames[i] != "" && objfind != null && luaBehaviour.monoItemNames[i] != objfind.name)
                {
                    if (GUILayout.Button("Auto", GUILayout.Width(50)))
                    {
                        luaBehaviour.monoItemNames[i] = "";
                    }
                }

                if (GUILayout.Button("Del", GUILayout.Width(40)))
                {
                    luaBehaviour.monoItemNames.RemoveAt(i);
                    RemoveAtMonos(luaBehaviour, i);
                }

                EditorGUILayout.EndHorizontal();
                EditorGUILayout.Space();
                EditorGUILayout.Space();
            }
        }

        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.Space();

        if (GUILayout.Button("Add Item"))
        {
            luaBehaviour.monoItemNames.Add("");
            AddMonoItem(luaBehaviour, -1, null);
        }

        EditorGUILayout.Space();
        EditorGUILayout.EndHorizontal();
    }