using UnityEngine;
using UnityEditor;
using System.Collections;
public class SpawnPrefab : EditorWindow
{
[MenuItem (“PrefabTools/SpawnPrefab”)]
public static void ShowWindow ()
{
EditorWindow.GetWindow (typeof(SpawnPrefab));
}
private static string prefabName;
private static string prefabTag;
private static int prefabLayer;
private static string prefabPath = "Assets/Resources/Prefab/";
private static bool isAddSpriteRenderer = false;
private static bool isAddUIAtlas = false;
private static bool isAddBoxCollider = false;
private static bool isAddGetCommponent = false;
private static bool isAddRigidbody2D = false;
private static bool isAddChildGameObject = false;
private static string childPrefabName;
void OnGUI ()
{
PrefabInfo ();
EditorGUILayout.Space();
EditorGUILayout.Space();
PrefabCommponent ();
EditorGUILayout.Space();
EditorGUILayout.Space();
AddChildGameObject ();
EditorGUILayout.Space();
EditorGUILayout.Space();
// PrefabPath ();
EditorGUILayout.Space();
CreatButton ();
}
static void PrefabInfo(){
prefabName = EditorGUILayout.TextField ("预设名字: ", prefabName);
prefabTag = EditorGUILayout.TagField("预设tag:",prefabTag);
prefabLayer = EditorGUILayout.LayerField("预设layer:",prefabLayer);
}
static void PrefabCommponent(){
isAddSpriteRenderer = GUILayout.Toggle (isAddSpriteRenderer, "是否添加SpriteRenderer组件");
isAddBoxCollider = GUILayout.Toggle (isAddBoxCollider, "是否添加BoxCollider组件");
isAddGetCommponent = GUILayout.Toggle (isAddGetCommponent, "是否添加GetCommponent组件");
isAddRigidbody2D = GUILayout.Toggle (isAddRigidbody2D, "是否添加Rigidbody2D组件");
isAddUIAtlas = GUILayout.Toggle (isAddUIAtlas, "是否添加UIAtlas组件");
}
static void AddChildGameObject(){
isAddChildGameObject = GUILayout.Toggle (isAddChildGameObject, "是否添加子物体");
childPrefabName = EditorGUILayout.TextField ("预设子物体名字: ", childPrefabName);
}
static void PrefabPath(){
prefabPath = EditorGUILayout.TextField ("预设保存路径,需自己设置: ", prefabPath);
}
static void CreatButton(){
if (GUILayout.Button ("生成预设在Hierarchy中", GUILayout.Height (20))) {
if (prefabName != null) {
CreatePrefab (prefabName,childPrefabName);
}
}
}
static void CreatePrefab (string name,string childName)
{
//获取所有被选中的物体
// Object[] selection=(Object[])Selection.objects;
// if(selection.Length==0) return;
GameObject prefab = new GameObject (name);
// GameObject prefab = (GameObject)Instantiate((GameObject)PrefabUtility.CreatePrefab (prefabPath + name + “.prefab”, (GameObject)obj));
// GameObject prefab = (GameObject)Instantiate(obj);
if (isAddSpriteRenderer) {
prefab.AddComponent<SpriteRenderer> ();
}
if (isAddUIAtlas) {
prefab.AddComponent<UIAtlas> ();
}
if (isAddBoxCollider) {
prefab.AddComponent<BoxCollider2D> ();
}
if (isAddGetCommponent) {
prefab.AddComponent<GetCommponent> ();
}
if (isAddRigidbody2D) {
prefab.AddComponent<Rigidbody2D> ();
}
if (isAddChildGameObject) {
GameObject childPrefab = new GameObject (childName);
childPrefab.transform.SetParent (prefab.transform);
}
prefab.tag = prefabTag;
prefab.layer = prefabLayer;
Debug.Log (">>>>>>>>>>>>>>>>>>>>成功生成预设物体: " + name + ">>>>>>>>>>>>>>>>>>>>>>>");
AssetDatabase.Refresh ();
}
void OnInspectorUpdate ()
{
Repaint ();
}
}