Beispiel #1
0
        public void ReplaceMonoBehaviour(string path)
        {
            MonoBehaviour m = MonoBehaviour.Import(path, Parser.Cabinet);

            if (m == null)
            {
                return;
            }

            for (int i = 0; i < Parser.Cabinet.Components.Count; i++)
            {
                Component asset = Parser.Cabinet.Components[i];
                if (asset.classID1 == m.classID1)
                {
                    MonoBehaviour mono = null;
                    string        name;
                    if (asset is NotLoaded)
                    {
                        name = ((NotLoaded)asset).Name;
                        if (name != m.m_Name)
                        {
                            continue;
                        }
                        mono = Parser.Cabinet.LoadComponent(asset.pathID);
                    }
                    else
                    {
                        mono = (MonoBehaviour)asset;
                        name = mono.m_GameObject.instance != null ? mono.m_GameObject.instance.m_Name : mono.m_Name;
                        if (name != m.m_Name)
                        {
                            continue;
                        }
                    }
                    if (mono.Parser.type.Members.Count > 4 && mono.Parser.type.Members[4] is UClass &&
                        ((UClass)mono.Parser.type.Members[4]).ClassName == "Param" &&
                        ((UClass)mono.Parser.type.Members[4]).Name == "list")
                    {
                        Uarray monoArr = (Uarray)((UClass)mono.Parser.type.Members[4]).Members[0];
                        Uarray mArr    = (Uarray)((UClass)m.Parser.type.Members[4]).Members[0];
                        monoArr.Value = mArr.Value;
                        Changed       = true;
                    }
                    return;
                }
            }
        }