一下都是最简的代码体,请自行组装,另外官方文档更加详细,这里仅供快速引用
自定义一个菜单
using UnityEditor;
using UnityEngine;
using Object = UnityEngine.Object;
public class InstanceMap : EditorWindow
{
[MenuItem("Window/TestWindow")]
static void Init()
{
// Get existing open window or if none, make a new one:
InstanceMap window = (InstanceMap)EditorWindow.GetWindow(typeof(InstanceMap));
window.Show();
}
void OnGUI()
{
}
}
在窗口中自定义一块变量区域
//以下代码均在OnGUI()方法中
//自定义复选框
myBool = EditorGUILayout.Toggle("Toggle", myBool);
//自定义滑块
myFloat = EditorGUILayout.Slider("Slider", myFloat, -3, 3);
//自定义Object存放区域
prefab = EditorGUILayout.ObjectField(prefab, typeof(Object), true);
//定义一个按钮,并且按钮按下后执行相关方法
if (GUILayout.Button("Build", GUILayout.ExpandWidth(true)))
{
}
这里EditorGUILayout和GUILayout是可以混合着使用的…有点迷
编辑器中创建一个GameObject
我找遍了代码,万万没想到直接用
GameObject.Instantiate
就可以了,然后编辑器中有一个类叫ObjectNames
,其中有获取名字和设置名字的方法
//创建一个指定物体
Object instantiate = GameObject.Instantiate(prefab);
ObjectNames.SetNameSmart(instantiate,"theName");
//创建一个空物体
GameObject o = new GameObject("objectName");
//创建一个unity自带模型
GameObject.CreatePrimitive(PrimitiveType.Capsule);
//当然也有Cube等其他模型,都在PrimitiveType中
可惜我没找到直接创建UI的地方,有知道用什么方法的朋友烦请告知一下
获取当前场景中的物体
//获取当前场景所有选中的物体
GameObject[] objects = Selection.gameObjects;
//另外Selection中还有很多选项,如objects,transforms,ID...等等
//获取当前场景所有物体
GameObject[] objects = GameObject.FindObjectsOfType<GameObject>();
//关键在于泛型中的GameObject,用这个其他的任何东西都可以获取,另外GameObject中还有通过tag找,通过各种方式找...
复制一个物体的组件
ComponentUtility.CopyComponent(panel.GetComponent<RectTransform>());
ComponentUtility.PasteComponentValues(newPanel.GetComponent<RectTransform>());
//这个类包括了每个组件右上角菜单的那些方法,删除,添加,各种方式都有,配合创建一个空物体的方法,可以说非常实用也非常好用了
设置为一个物体为另一个物体的子物体
newPanel.transform.SetParent(content.transform);//以transform为基础的设置
//另外注意一些坐标的调整,在设置父组件前和设置后调整是不一样的,注意坐标的转换和相关的区别
在层级面板中设置选中物体
//选中单个物体
Selection.activeGameObject = gameObject;
//选中多个物体
Selection.gameObjects = gameObjects
总之与选中相关的都在这个类里面了,再次说一下Unity的这种功能类的命名真的是太直观了,找起来都很顺手
动态更改物体材质
obj.GetComponent<Renderer>().material.mainTexture = Texture;
//很多跟材质、颜色相关的根本都是在Renderer这,而不是Material,MeshRender之类的
持续更新ing….