加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

unity批量制作预制物体Prefab

(2013-08-01 20:47:45)
标签:

育儿

分类: 【unity3D研究室】

有时候场景中一大批物体都需要制作成预制物体,但是unity只能手动一个一个的创建,感觉非常的蹩脚,下面一个编辑器类的方法解决你的麻烦。

01 static Object CreatePrefab(GameObject go, string name)
02 {
03     //先创建一个空的预制物体
04     //预制物体保存在工程中路径,可以修改("Assets/" + name + ".prefab");
05     Object tempPrefab = EditorUtility.CreateEmptyPrefab("Assets/" + name + ".prefab");
06     //然后拿我们场景中的物体替换空的预制物体
07     tempPrefab = EditorUtility.ReplacePrefab(go, tempPrefab);
08     //返回创建后的预制物体
09     return tempPrefab;
10 }

这个方法可以随意根据任何规则来写,比如可以遍历一个物体的所有子物体,全部制作成预制物体保存到你的工程中,代码如下:

01 [MenuItem("Tools/BatchPrefab All Children")]
02 public static void BatchPrefab(){
03     Transform tParent = ((GameObject)Selection.activeObject).transform;
04      
05     Object tempPrefab;
06     int i = 0;
07     foreach(Transform t in tParent){
08         tempPrefab = EditorUtility.CreateEmptyPrefab("Assets/Prefab/prefab" + i +".prefab");
09         tempPrefab = EditorUtility.ReplacePrefab(t.gameObject, tempPrefab);
10         i ++;
11     }
12 }

上面代码中,在unity中添加了一个工具的菜单/BatchPrefab All Children(批量为所有子物体制作预物体),首先获取场景中选中的物体,遍历其所有子物体,为每一个子物体制作预制物体保存在工程种的目录下

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有