Beispiel #1
0
        // RiClothes SetuperのGUIを描画
        void OnGUI()
        {
            scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);

            PrefabData.SetAvatar(EditorGUILayout.ObjectField(I18N.Instance().Get("option.input.avatar"), PrefabData.GetAvatar(), typeof(GameObject), true) as GameObject);
            PrefabData.SetCloth(EditorGUILayout.ObjectField(I18N.Instance().Get("option.input.cloth"), PrefabData.GetCloth(), typeof(GameObject), true) as GameObject);

            //prevとの比較が必要な処理: 開始
            SetupExpandOption();

            //prevとの比較が必要な処理: 終了
            //prev更新
            prevAvatarPrefab = PrefabData.GetAvatar();
            prevClothPrefab  = PrefabData.GetCloth();

            OnAdvancedOptionGUI();

            //上から16のマージン
            GUILayout.Space(16);
            if (GUILayout.Button(I18N.Instance().Get("option.button.change_cloth")))
            {
                if (PrefabData.GetAvatar() == null || PrefabData.GetCloth() == null)
                {
                    return;
                }
                //両方とも同じプレハブが入っているときは処理しないように
                if (PrefabData.GetAvatar() == PrefabData.GetCloth())
                {
                    return;
                }

                PrefabUtil.UnpackPrefabOnPrefabData();
                //ボーンを移動する前に実行されるオプション
                setuperExpandOption.BeforeMoveArmature();
                SetupArmature(PrefabData.GetAvatar().transform.Find("Armature"), PrefabData.GetCloth().transform.Find("Armature"));
                //ボーンを移動した後に実行されるオプション
                setuperExpandOption.AfterMoveBone();

                MoveClothObject();

                //Setuper側の処理が終わったあとに実行
                setuperExpandOption.AfterSetuperProcess();

                //残った服の残骸(プレハブ)を消す
                GameObject.DestroyImmediate(PrefabData.GetCloth());

                //Missing Scriptを削除するオプションが有効のときMissing Scriptを削除する
                if (isRemoveMissingScript)
                {
                    SetuperMissingRemover.Remove(PrefabData.GetAvatar());
                }
                #if UNITY_2018
                //シリアライズオブジェクトを編集した場合一回実行しないとUnityを閉じるときにクラッシュするのを対策
                EditorApplication.ExecuteMenuItem("Edit/Play");
                #endif
                Close();
            }

            EditorGUILayout.EndScrollView();
        }
Beispiel #2
0
        public static void UnpackPrefabOnPrefabData()
        {
            //Assetから直接D&Dだったらインスタンス化
            if (AssetDatabase.GetAssetPath(PrefabData.GetAvatar()) != "")
            {
                PrefabData.SetAvatar(PrefabUtility.InstantiatePrefab(PrefabData.GetAvatar()) as GameObject);
            }
            //Assetから直接D&Dだったらインスタンス化
            if (AssetDatabase.GetAssetPath(PrefabData.GetCloth()) != "")
            {
                PrefabData.SetCloth(PrefabUtility.InstantiatePrefab(PrefabData.GetCloth()) as GameObject);
            }

            UnpackPrefab(PrefabData.GetAvatar());
            UnpackPrefab(PrefabData.GetCloth());
        }
        void OnGUI()
        {
            if (clothUnInstaller == null)
            {
                clothUnInstaller = new ClothUnInstaller();
            }

            GUILayout.Space(2);
            GUILayout.Label("Cloth UnInstaller", styleTitleStyle);
            GUIUtil.RenderLabel(I18N.Instance().Get("cloth_uninstaller.description"));

            GUILayout.Space(8);

            PrefabData.SetAvatar(EditorGUILayout.ObjectField(I18N.Instance().Get("option.input.avatar"), PrefabData.GetAvatar(), typeof(GameObject), true) as GameObject);
            PrefabData.SetCloth(EditorGUILayout.ObjectField(I18N.Instance().Get("option.input.cloth"), PrefabData.GetCloth(), typeof(GameObject), true) as GameObject);

            if (prevCloth != PrefabData.GetCloth())
            {
                clothUnInstaller.UpdateClothPrefab();
                prevCloth = PrefabData.GetCloth();
            }

            //Setuper V2以上必須
            if (clothUnInstaller.GetExpandOptionVersion() <= 1 && PrefabData.GetCloth() != null)
            {
                GUILayout.Space(4);
                GUIUtil.RenderLabel(I18N.Instance().Get("cloth_uninstaller.un_support_version"));
                return;
            }

            if (PrefabData.GetAvatar() == null || PrefabData.GetCloth() == null)
            {
                return;
            }

            GUILayout.Space(12);
            if (GUILayout.Button(I18N.Instance().Get("cloth_uninstaller.uninstall_button")))
            {
                string id = clothUnInstaller.GetExpandOptionID();
                if (id == "")
                {
                    return;
                }
                clothUnInstaller.UnInstall(PrefabData.GetAvatar().transform, id);
            }
        }