http://www.u3dblog.com/?p=441编辑器
有时候场景中一大批物体都须要制做成预制物体,可是unity只能手动一个一个的建立,感受很是的蹩脚,下面一个编辑器类的方法解决你的麻烦。工具
static Object CreatePrefab(GameObject go, string name) { //先建立一个空的预制物体 //预制物体保存在工程中路径,能够修改("Assets/" + name + ".prefab"); Object tempPrefab = PrefabUtility.CreateEmptyPrefab("Assets/" + name + ".prefab"); //而后拿咱们场景中的物体替换空的预制物体 tempPrefab = PrefabUtility.ReplacePrefab(go, tempPrefab); //返回建立后的预制物体 return tempPrefab; }
这个方法能够随意根据任何规则来写,好比能够遍历一个物体的全部子物体,所有制做成预制物体保存到你的工程中,代码以下:spa
[MenuItem("Tools/BatchPrefab All Children")] public static void BatchPrefab(){ Transform tParent = ((GameObject)Selection.activeObject).transform; Object tempPrefab; int i = 0; foreach(Transform t in tParent){ tempPrefab = PrefabUtility.CreateEmptyPrefab("Assets/Prefab/prefab" + i + ".prefab"); tempPrefab = PrefabUtility.ReplacePrefab(t.gameObject, tempPrefab); i ++; } }
上面代码中,在unity中添加了一个工具的菜单/BatchPrefab All Children(批量为全部子物体制做预物体),首先获取场景中选中的物体,遍历其全部子物体,为每个子物体制做预制物体保存在工程种的目录下。3d