【发布时间】:2019-05-17 02:20:12
【问题描述】:
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditorInternal;
using UnityEngine;
[CustomEditor(typeof(ConversationTrigger))]
public class ConversationTriggerEditor : Editor
{
private ConversationTrigger conversationtrigger;
private void OnEnable()
{
conversationtrigger = FindObjectOfType<ConversationTrigger>();
}
public override void OnInspectorGUI()
{
DrawDefaultInspector();
if(GUI.Button(new Rect(0.1f,0.5f,0.1f,0.1f), "Add new item"))
{
conversationtrigger.conversations.Add(new Conversation());
}
if (GUILayout.Button("Save Conversations"))
{
conversationtrigger.SaveConversations();
}
if (GUILayout.Button("Load Conversations"))
{
Undo.RecordObject(conversationtrigger, "Loaded conversations from JSON");
conversationtrigger.LoadConversations();
}
}
}
我试过这条线:
if(GUI.Button(new Rect(0.1f,0.5f,0.1f,0.1f), "Add new item"))
但这会使按钮像删除一样消失。
如果我使用GUILayout.Button,我会看到按钮,但我无法设置按钮位置,所以我使用GUI.Button。
我想将按钮 "Add new item" 放在 Canvas 字段之前,并且总是在最后一个对话项目之后,在本例中是 Locked Room。如果我要添加一个新项目,按钮应该保留在新添加的项目之后和Canvas 字段之前。
我猜Rect 的这个值是错误的,使按钮位于窗口外。
这是 Inspector 的截图:
【问题讨论】:
标签: c# unity3d unity3d-editor