码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3D Editor模式下批量修改prefab

时间:2015-11-03 22:51:34      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:

最经遇到一个需要批量修改已经做好的prefab的问题,查了一些资料最终实现了但是还是不够完美,通过学习也发现unity的编辑器功能还是非常强大的。废话不多说直接上代码:

 1 [ExecuteInEditMode]
 2     [MenuItem("Tools/RecordPoint Add Flame")]
 3     private static void RecordPointAddFlame()
 4     {
 5         GameObject twoSphere = AssetDatabase.LoadAssetAtPath("Assets/Resources/Prefabs/TwoSphere.prefab", typeof(GameObject)) as GameObject;
 6 
 7         string[] ids = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets/Resources/Prefabs" });
 8         for (int i = 0; i < ids.Length; i++)
 9         {
10             string path = AssetDatabase.GUIDToAssetPath(ids[i]);
11             Debug.Log(path);
12             if (!path.Contains("TwoCube"))
13             {
14                 continue;
15             }
16             GameObject originTwoCube = AssetDatabase.LoadAssetAtPath(path, typeof(GameObject)) as GameObject;
17             GameObject twoCube = PrefabUtility.InstantiatePrefab(originTwoCube) as GameObject;
18 
19             foreach (Transform item in twoCube.transform)
20             {
21                 if (item.FindChild("TwoSphere") == null)
22                 {
23                     GameObject ts = PrefabUtility.InstantiatePrefab(twoSphere) as GameObject;
24                     ts.transform.parent = item;
25                 }
26             }
27 
28             var newprefab = PrefabUtility.CreateEmptyPrefab("Assets/Resources/Prefabs/TwoCube.prefab");
29             PrefabUtility.ReplacePrefab(twoCube, newprefab, ReplacePrefabOptions.Default);
30         }
31 
32         AssetDatabase.SaveAssets();
33         Debug.Log("Done");
34     }

 

 这段代码的功能是在TwoCube这个prefab的两个子对象cube上挂一个名为TwoSphere的prefab。如图

技术分享

最终结果如下:

 

技术分享

代码中为什么要使用PrefabUtility.InstantiatePrefab和PrefabUtility.ReplacePrefab,这是因为上述例子有一点比较特殊的地方,就是是一个prefab中嵌入另一个prefab。如果单纯的只是操作一个prefab是没有必要这样做的。

Unity3D Editor模式下批量修改prefab

标签:

原文地址:http://www.cnblogs.com/klkucan/p/4934518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!