关于unity3d中prefabs的问题 初学者
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于unity3d中prefabs的问题 初学者相关的知识,希望对你有一定的参考价值。
假如我要用若干个砖块垒砌一面墙 ,这个砖块应该设置成prefabs没问题,如果不设置成prefabs就是单纯的cube拉倒脚本里也能正常运行,这样理论上也对么?还是说一定得用prefabs.
顺便再问一句,游戏运行后在scene中不仅实例化的砖块会出现,这个prefabs的cube也出现了,那它是实例化了么?
prefab只有两种使用方法,一是在代码里调用Instantiate;另一种是拖到场景里产生一个和他关联的物体(在Hierarchy里显示蓝色)。
后一种情况可以发生多次,也就是说你这面墙上的砖都可以在scene里创建,不需要代码。而且他们都是和prefab关联的,你在prefab文件上的修改会在所有砖块上生效。还有一种方法是在场景里随便选个砖块,修改完后点apply,效果是一样的。
关于你最后一个问题,你说的"这个prefabs的cube也出现了"其实并不是prefab,是你用来创建prefab的那个物体,完全可以删了。追问
谢谢你的回答! 那如果我想让这面墙刚好落在新创建的地面上应该怎么设置坐标嘞?
追答最简单的办法是把调整地面位置使得y=0就是地面,并把砖块的原点设置到底部,这样的话只要砖块的transform.position.y是0它就在地面上。
本回答被提问者和网友采纳unity, 保存prefab时material丢失问题
在程序运行时用replacePrefab(gameObj,prefab)或createPrefab(gameObj,prefab)保存prefab,遇到保存出来的prefab中material丢失的问题。
最后查到原因是gameObj的material成员引用的是一个material实例,而非material资源,所以保存成prefab后引用会丢失。
而导致gameObj的material成员实例化的原因是某处调用了gameObj.meshRenderer.material。
以上是关于关于unity3d中prefabs的问题 初学者的主要内容,如果未能解决你的问题,请参考以下文章