我有一些Node
个对象的图表,它们有助于代表一些内部游戏状态。我希望能够从预制件中生成GameObjects
,使用GUI初始化关联的Node
对象 - 也就是说,有人可以在编辑模式下扩展nodes
以下的示例。
我不熟悉如何在编辑模式下执行此操作,而不是在运行时实例化。
这是否可能,如果是这样,我将如何进一步发展?我对ScriptableObject
很熟悉,但我不确定这里是否相关/必要。
[ExecuteInEditMode]
public class UGraph : MonoBehaviour
{
[SerializeField] GameObject nprefab;
[SerializeField] List<Node> nodes;
public void CreateNode(Transform transform)
{
GameObject go = Instantiate(nprefab, transform.position,
transform.rotation) as GameObject;
AddToGraph(go.GetComponent<Node>());
}
public void AddToGraph(Node node)
{
node.Graph = this;
nodes.Add(node);
}
...
有关此问题的一些想法来自:https://gist.github.com/Problematic/a14aeb0638a09f378ad3
答案 0 :(得分:-1)
Lece向我指出了扩展编辑器的第一页:https://docs.unity3d.com/Manual/editor-CustomEditors.html
这有助于我了解如何使用EditorWindow
,并通过按下按钮激活Instantiate
。
public class NodeCreator : EditorWindow
{
....
[MenuItem ("Window/Node Creator")]
static void ShowWindow()
{
EditorWindow.GetWindow(typeof(NodeCreator));
}
....
void OnGUI()
{
....
if (GUILayout.Button("Create"))
{
tempobj = Instantiate(obj) as GameObject;
...
}
....
}