csharp サクッとオブジェクト同士を阶层化させるエディタ拡张.GameObjectは非対応です
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp サクッとオブジェクト同士を阶层化させるエディタ拡张.GameObjectは非対応です相关的知识,希望对你有一定的参考价值。
using UnityEngine;
using System.Collections;
using UnityEditor;
/// <summary>
/// サクッとオブジェクト同士を階層化させるエディタ拡張。GameObjectは非対応です
/// </summary>
public class ContainWindow: EditorWindow
{
[MenuItem("Window/ContainWindow")]
private static void Init ()
{
var w = EditorWindow.GetWindow <ContainWindow> ();
w.titleContent = new GUIContent ("ContainWindow");
w.Show ();
}
private Object _parent;
private Object _childObj;
private Object _deleteObj;
private void OnGUI ()
{
EditorGUILayout.LabelField ("サクッとオブジェクト同士を階層化させます");
EditorGUILayout.Space ();
EditorGUILayout.LabelField ("親オブジェクト");
_parent = EditorGUILayout.ObjectField (_parent, typeof(Object), false) as Object;
EditorGUILayout.LabelField ("子供にするオブジェクト");
_childObj = EditorGUILayout.ObjectField (_childObj, typeof(Object), true) as Object;
EditorGUILayout.LabelField ("削除したいオブジェクト");
_deleteObj = EditorGUILayout.ObjectField (_deleteObj, typeof(Object), true) as Object;
if (_deleteObj != null)
{
if (GUILayout.Button ("Delete", GUILayout.Height (30f)))
{
Object.DestroyImmediate (_deleteObj, true);
AssetDatabase.Refresh ();
AssetDatabase.SaveAssets ();
}
}
if (Varidate() == false)
{
return;
}
EditorGUILayout.LabelField("子オブジェクトがコピーされて親子関係になります");
if (GUILayout.Button ("Start Contain", GUILayout.Height (30f)))
{
var obj = Instantiate(_childObj);
// Remove name "(Clone)"
obj.name = _childObj.name;
AssetDatabase.AddObjectToAsset (obj, AssetDatabase.GetAssetPath (_parent));
AssetDatabase.ImportAsset (AssetDatabase.GetAssetPath (_parent));
AssetDatabase.Refresh ();
AssetDatabase.SaveAssets ();
}
}
private bool Varidate()
{
if (_parent == null || _childObj == null)
{
return false;
}
if (_parent is GameObject)
{
_parent = null;
return false;
}
if (_childObj is GameObject)
{
_childObj = null;
return false;
}
if (_parent == _childObj)
{
_childObj = null;
return false;
}
return true;
}
}
以上是关于csharp サクッとオブジェクト同士を阶层化させるエディタ拡张.GameObjectは非対応です的主要内容,如果未能解决你的问题,请参考以下文章
csharp DIできる状态で,动的にオブジェクトを生成する(普通にGameObject.Instantiateすると,生成されたオブジェクトにはDIされない))
csharp 动的に生成したオブジェクトで机能DI DI
csharp DIが机能するように,オブジェクトを动的生成する
markdown SharedPreferenceに単纯なオブジェクト,泛型を使ったオブジェクトを保存
text 数学オブジェクト
markdown オブジェクトの判定