预设怎么取消
如下图所示,创建一个普通的立方体对象Cube ,Hierarchy视图中名子的颜色是“白色”的。同样在创建一个Prefabe ,你会发现此时立方体对象在Hierrchy视图中名子的颜色成“蓝色”了。
接着问题就来了,这个朋友就问怎么才能让Prefab(蓝色名子)的游戏对象还原成Cube(白色名子),这确实是个很细节的问题,他目前的作法是把Cube(预设)删除,从新在创建一个新的Cube对象。这样的作法确实没问题,但是多少让人感觉有点不符合逻辑。如下图所示,正确的作法应该是先选择预设的Cube对象,然后在Unity导航菜单栏中选择GameObject-> Break Prefab Instance 。
继续如下图所示,立方体对象的名子是不是变成“白色”拉? 此时如果说你想将预设还原,那么在导航菜单栏中选择GameObject -> Apply Changes To Prefab ,在看看你的Cube的名子就由变成“蓝色”。仔细观察还是有问题,请看右侧Inspector视图中下面有一个“Prefab”的标志,这说明它并没有清理干净。
如果你想彻底的还原Cube对象,那么只有一个办法就是在Project视图中删除原始Prefab对象。此时删除你会发现你的立方对象已经和新创建的没什么两样了,还有一种情况是你并没有先将立方体对象Break Prefab Instance 而是直接在Hierarchy视图中删除。如下图所,此时你会发现你的Cube颜色成红色,它表示你的Prefab已经丢失。
此时选中“红色的”Cube对象,继续在Unity导航菜单栏中选择GameObject->Break Prefab Instance ,你会发现你的立方体对象已经和新创建的完全一样拉。
然后是Prefabe的批量应用,在Hierarchy视图中可能会有很多相同的Prefab对象,此时如果想给所有的Prefabe对象添加或删除一个组件该如何?在Project视图中找到Prefabe原始对象,直接在这个对象上添加或删除组件,它会全部应用所有Hierarchy视图中的Prefab对象们。但是这样还有问题,就是Project视图中的Prefab原始对象它并不可以在Scene视图中去预览,所以我推荐大家使用另外一种方式来批量应用Prefabe对象。
先在Hierarchy视图中选择Prefab对象中的其中一个。在右侧Inspector视图中,如下图所示,Prefab对象都有三个常用的按钮.
Select:点击后会立即定位到Project视图中的原始Prefab对象。
Revert:如果你不小心破坏了Hierarchy视图中当前这个Prefab对象,点击它可以还原至Project视图中原始Prefab对象。
Apply: 主要想说的就是这个, 如果你想批量修改所有Prefab对象,比如添加一个新的组件后,点击这个按钮可以把所有对象还有原始Prefabe对象都应用成你现在编辑的对象。还有一种方法也可以达到这种效果,就在在Unity导航菜单栏中选择GameObject -> Apply Changes To Prefab 。
立方体、球体、圆柱体、胶囊体、面这几个是Unity自身提供的原始模型,如果你的模型是由美术自行创建的Fbx文件该如何?
.Fbx模型属于资源对象,和贴图、材质、声音属于同样类型的资源。。但是.Fbx更加的特殊,因为它可以直接拖入Hierarchy视图中并生成游戏对象。此时你会发现Hierarchy视图中它也是蓝颜色的字,但是它并不是Prefab对象,它是Mode对象。它也可以使用导航菜单栏中的 Break Prefab Instance ,我建议使用的时候最好把.fbx模型对象转成Prefab对象来使用。
上面说的很多都是在编辑器模式下,下面在说说程序运行时。在脚本中可以这样动态的生成Prefab 。
也可以通过Resource动态的加载Prefab原始对象,AssetBundle.load()也可以。。
1
|
Resources
.
Load
(
"Prefab"
)
|
如果你想编辑器拓展Prefab插件的话可以使用 PrefabUtility类,它属于Editor下的类,只能在编辑时运行。比如创建Prefab对象, 替换Prefab对象,克隆Prefab对象。等等,都可以使用它。
继续如下图所示,立方体对象的名子是不是变成“白色”拉? 此时如果说你想将预设还原,那么在导航菜单栏中选择GameObject -> Apply Changes To Prefab ,在看看你的Cube的名子就由变成“蓝色”。仔细观察还是有问题,请看右侧Inspector视图中下面有一个“Prefab”的标志,这说明它并没有清理干净。
如果你想彻底的还原Cube对象,那么只有一个办法就是在Project视图中删除原始Prefab对象。此时删除你会发现你的立方对象已经和新创建的没什么两样了,还有一种情况是你并没有先将立方体对象Break Prefab Instance 而是直接在Hierarchy视图中删除。如下图所,此时你会发现你的Cube颜色成红色,它表示你的Prefab已经丢失。
此时选中“红色的”Cube对象,继续在Unity导航菜单栏中选择GameObject->Break Prefab Instance ,你会发现你的立方体对象已经和新创建的完全一样拉。
然后是Prefabe的批量应用,在Hierarchy视图中可能会有很多相同的Prefab对象,此时如果想给所有的Prefabe对象添加或删除一个组件该如何?在Project视图中找到Prefabe原始对象,直接在这个对象上添加或删除组件,它会全部应用所有Hierarchy视图中的Prefab对象们。但是这样还有问题,就是Project视图中的Prefab原始对象它并不可以在Scene视图中去预览,所以我推荐大家使用另外一种方式来批量应用Prefabe对象。
先在Hierarchy视图中选择Prefab对象中的其中一个。在右侧Inspector视图中,如下图所示,Prefab对象都有三个常用的按钮.
Select:点击后会立即定位到Project视图中的原始Prefab对象。
Revert:如果你不小心破坏了Hierarchy视图中当前这个Prefab对象,点击它可以还原至Project视图中原始Prefab对象。
Apply: 主要想说的就是这个, 如果你想批量修改所有Prefab对象,比如添加一个新的组件后,点击这个按钮可以把所有对象还有原始Prefabe对象都应用成你现在编辑的对象。还有一种方法也可以达到这种效果,就在在Unity导航菜单栏中选择GameObject -> Apply Changes To Prefab 。
立方体、球体、圆柱体、胶囊体、面这几个是Unity自身提供的原始模型,如果你的模型是由美术自行创建的Fbx文件该如何?
.Fbx模型属于资源对象,和贴图、材质、声音属于同样类型的资源。。但是.Fbx更加的特殊,因为它可以直接拖入Hierarchy视图中并生成游戏对象。此时你会发现Hierarchy视图中它也是蓝颜色的字,但是它并不是Prefab对象,它是Mode对象。它也可以使用导航菜单栏中的 Break Prefab Instance ,我建议使用的时候最好把.fbx模型对象转成Prefab对象来使用。
上面说的很多都是在编辑器模式下,下面在说说程序运行时。在脚本中可以这样动态的生成Prefab 。
也可以通过Resource动态的加载Prefab原始对象,AssetBundle.load()也可以。。
1
|
Resources
.
Load
(
"Prefab"
)
|
如果你想编辑器拓展Prefab插件的话可以使用 PrefabUtility类,它属于Editor下的类,只能在编辑时运行。比如创建Prefab对象, 替换Prefab对象,克隆Prefab对象。等等,都可以使用它。 使用起来有问题的话欢迎留言给我。