/// <summary> /// スンスペクター描画 /// </summary> public override void OnInspectorGUI() { // とりあえずデフォルト // DrawDefaultInspector() ; //-------------------------------------------- // ターゲットのインスタンス SoftTransform tTarget = target as SoftTransform; EditorGUILayout.Separator(); // 少し区切りスペース //----------------------- EditorGUILayout.Separator(); // 少し区切りスペース EditorGUIUtility.labelWidth = 60f; EditorGUIUtility.fieldWidth = 40f; GUI.backgroundColor = Color.cyan; string tIdentity = EditorGUILayout.TextField("Identity", tTarget.identity); GUI.backgroundColor = Color.white; if (tIdentity != tTarget.identity) { Undo.RecordObject(tTarget, "SoftTransform : Identity Change"); // アンドウバッファに登録 tTarget.identity = tIdentity; EditorUtility.SetDirty(tTarget); } EditorGUIUtility.labelWidth = 116f; EditorGUIUtility.fieldWidth = 40f; //------------------------------------------ // Tween の追加と削除 DrawTween(tTarget); //------------------------------------------ DrawInspectorGUI(); }
//------------------------------------------------------------------------------------------- /// <summary> /// 指定の親からの相対的な位置を取得する /// </summary> /// <param name="tParent"></param> /// <returns></returns> public Vector3 GetRelativePosition(SoftTransform tParent) { return(transform.position - tParent.transform.position); }
protected void DrawTween(SoftTransform tTarget) { EditorGUILayout.Separator(); // 少し区切りスペース // 存在している Tween コンポーネントを取得する SoftTransformTween[] tTweenArray = tTarget.GetComponents <SoftTransformTween>(); // 1つ以上存在していればリストとして描画する int i, l = tTweenArray.Length, j, c; string tIdentity; string[] tTweenIdentityArray = new string[l]; for (i = 0; i < l; i++) { tTweenIdentityArray[i] = tTweenArray[i].identity; } for (i = 0; i < l; i++) { // 既に同じ名前が存在する場合は番号を振る tIdentity = tTweenIdentityArray[i]; c = 0; for (j = i + 1; j < l; j++) { if (tTweenIdentityArray[j] == tIdentity) { // 同じ名前を発見した c++; tTweenIdentityArray[j] = tTweenIdentityArray[j] + "(" + c + ")"; } } } //---------------------------------------------------- if (m_RemoveTweenIndexAnswer < 0) { GUILayout.BeginHorizontal(); // 横並び開始 { bool tAdd = false; GUI.backgroundColor = Color.cyan; if (GUILayout.Button("Add Tween", GUILayout.Width(140f)) == true) { tAdd = true; } GUI.backgroundColor = Color.white; GUI.backgroundColor = Color.cyan; m_AddTweenIdentity = EditorGUILayout.TextField("", m_AddTweenIdentity, GUILayout.Width(120f)); GUI.backgroundColor = Color.white; if (tAdd == true) { if (string.IsNullOrEmpty(m_AddTweenIdentity) == false) { // Tween を追加する SoftTransformTween tTween = tTarget.AddComponent <SoftTransformTween>(); tTween.identity = m_AddTweenIdentity; SoftTransformTween[] tTweenList = tTarget.gameObject.GetComponents <SoftTransformTween>(); if (tTweenList != null && tTweenList.Length > 0) { for (i = 0; i < tTweenList.Length; i++) { if (tTweenList[i] != tTween) { break; } } if (i < tTweenList.Length) { // 既にトゥイーンコンポーネントがアタッチされているので enable と PlayOnAwake を false にする tTween.enabled = false; tTween.playOnAwake = false; } } } else { EditorUtility.DisplayDialog("Add Tween", GetMessage("InputIdentity"), "Close"); } } } GUILayout.EndHorizontal(); // 横並び終了 if (tTweenArray != null && tTweenArray.Length > 0) { GUILayout.BeginHorizontal(); // 横並び開始 { bool tRemove = false; GUI.backgroundColor = Color.red; // ボタンの下地を緑に if (GUILayout.Button("Remove Tween", GUILayout.Width(140f)) == true) { tRemove = true; } GUI.backgroundColor = Color.white; // ボタンの下地を緑に if (m_RemoveTweenIndex >= tTweenIdentityArray.Length) { m_RemoveTweenIndex = tTweenIdentityArray.Length - 1; } m_RemoveTweenIndex = EditorGUILayout.Popup("", m_RemoveTweenIndex, tTweenIdentityArray, GUILayout.Width(120f)); // フィールド名有りタイプ if (tRemove == true) { // 削除する m_RemoveTweenIndexAnswer = m_RemoveTweenIndex; } } GUILayout.EndHorizontal(); // 横並び終了 } } else { string tMessage = GetMessage("RemoveTweenOK?").Replace("%1", tTweenIdentityArray[m_RemoveTweenIndexAnswer]); GUILayout.Label(tMessage); // GUILayout.Label( "It does really may be to remove tween '" + tTweenIdentityArray[ mRemoveTweenIndexAnswer ] + "' ?" ) ; GUILayout.BeginHorizontal(); // 横並び開始 { GUI.backgroundColor = Color.red; if (GUILayout.Button("OK", GUILayout.Width(100f)) == true) { // 本当に削除する Undo.RecordObject(tTarget, "UIView : Tween Remove"); // アンドウバッファに登録 tTarget.removeTweenIdentity = tTweenArray[m_RemoveTweenIndexAnswer].identity; tTarget.removeTweenInstance = tTweenArray[m_RemoveTweenIndexAnswer].GetInstanceID(); EditorUtility.SetDirty(tTarget); UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene()); m_RemoveTweenIndexAnswer = -1; } GUI.backgroundColor = Color.white; if (GUILayout.Button("Cancel", GUILayout.Width(100f)) == true) { m_RemoveTweenIndexAnswer = -1; } } GUILayout.EndHorizontal(); // 横並び終了 } }