Unity3D游戏开发之Prefab和GameObject的正向和逆向查找.doc_第1页
Unity3D游戏开发之Prefab和GameObject的正向和逆向查找.doc_第2页
Unity3D游戏开发之Prefab和GameObject的正向和逆向查找.doc_第3页
Unity3D游戏开发之Prefab和GameObject的正向和逆向查找.doc_第4页
Unity3D游戏开发之Prefab和GameObject的正向和逆向查找.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

我发现很多美工兄弟都爱问程序Unity3d为什么总丢材质? 我不排除U3d有BUG的情况下会丢材质?但是其实很多时候是人为操作而引起的。1.不保存就在上传 这个操作太恐怖了,切记!在 U3D里面你无论操作了什么,当你要上传svn的时候一定要先保存场景,Ctrl+S 切记切记!如果不保存就上传很有可能就会丢材质。2.我的电脑明明没事,怎么你哪里就丢材质? 我发现一个很有意思的现象,每次走到美术电脑前看它的svn工程时,我都会发现各种的“黄叹号”整个工程严重的冲突。然后程序和美术的对话就是:“这资源有用没?没用删了, 我重新更新。” 哈哈哈 我觉得可能只有程序员才会对冲突非常敏感吧,但我觉得这件事不能怪美术,美术是很抽象的东西,不向程序要具体到少一个分号就无法进行了。3.管理好材质贴图 如果项目不管理好材质和贴图,后起你会发现有很多完全一样的图片只是名子不一样,但是还都在使用中。这个很有可能是好几个美术同时在做,这样会造成资源的浪费。4.特效丢材质 文章来自【狗刨学习网】 我举个实际的例子,我们项目场景和特效是两个人来做。之前总遇到场景特效莫名其妙丢材质的问题。原因就是做特效的人把特效修改了,但是做场景的又不知道,因为可能这个特效在好多场景上都在使用中。 如下图所示,在Preiject下面方的Prefab 如果拖入Hierarchy视图中,它俩是具有关联关系的,如果你直接在Project视图中修改了Prefab那么所有Hierarchy视图中关联它的Prefab都会得到修改。小改动这样是没问题的,如果发生一些比较大的改动,那么Hierarchy视图中Prefab可能就会丢失或者坏掉。但是假如你有很多场景都引用同一个Prefab,这么多场景会很难找到的。正向在Hierarch视图中选择一个prefab,然后在右侧Inspector视图中点击Select会自动找到Project视图中的Prefab对象。那么反向如何从Project视图中找到Hierarchy视图中引用的Prefab呢?如下图所示,Unity3d做了一个功能,在Project视图中选择一个Prefab,然后右键选择Find References In Scene ,那么此时Unity会自动帮你在当前场景中找到Hierarchy视图中引用这个Prefab的GameObject。 但是这个方法有点局限性,就是它只能找到当前场景的,假设你的这个Prefab在很多场景中都引用了,那么这样是找不到了,为了美术我决定写一个小小的工具,嘿嘿。12345678910111213141516171819202122232425262728293031323334353637383940414243444546MenuItem(Assets/Check Prefab Use ?)private static void OnSearchForReferences()/确保鼠标右键选择的是一个Prefabif(Selection.gameObjects.Length != 1)return;/遍历所有游戏场景foreach(EditorBuildSettingsScene scene in EditorBuildSettings.scenes)if(scene.enabled)/打开场景EditorApplication.OpenScene(scene.path);/获取场景中的所有游戏对象GameObject gos = (GameObject)FindObjectsOfType(typeof(GameObject);foreach(GameObject goin gos)/判断GameObject是否为一个Prefab的引用if(PrefabUtility.GetPrefabType(go)= PrefabType.PrefabInstance)UnityEngine.Object parentObject = EditorUtility.GetPrefabParent(go); string path = AssetDatabase.GetAssetPath(parentObject);/判断GameObject的Prefab是否和右键选择的Prefab是同一路径。if(path = AssetDatabase.GetAssetPath(Selection.activeGameObject)/输出场景名,以及Prefab引用的路径Debug.Log(scene.path+ + GetGameObjectPath(go);public static string GetGameObjectPath(GameObject obj)string path = / + ;while (obj.transform.parent != null)obj = obj.transform.parent.gameObject;path = / + + path;return path; 如下图所示,我就可以找到哪个场景引用了这个Prefab。 这里我没有用GameObject和Prefab的名子来判断,我觉得最好也不要用名字,因为Hierarchy视图中的名子完全可以随意修改的,如果被改了的话就肯定找不到了,而且场景那么多完全有重名的情况。是不是很简单呢?嘿嘿。 或

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论