找回密码
 立即注册
查看: 184|回复: 0

Unity基础(十三)场景与预制件

[复制链接]
发表于 2023-1-1 10:35 | 显示全部楼层 |阅读模式
I. 预制件的作用

<hr>
unity中我们通常需要给游戏对象添加一些比如刚体、碰撞体等组件实现一些效果。
场景中的道具在场景中需要被重复使用时,如果是一步一步重复添加组件,效率会非常低,这是我们就希望把同一种需要复制的对象打包起来,需要用的时候直接复制粘贴即可。
预制件就是unity提供给用户的一个实现上述操作的资源类型。
II. 预制件的定义

<hr>
预制件(prefab)是一种assert资源类型;
预制件用于存储游戏对象(GameObject)对象以及配套的组件和属性;
预制件充当一种模板功能,是一个可重复使用的资源模板;
III. 预制件的优点

<hr>
既然它是一个打包好的资源模板,那么优点就清晰可见了。它可以轻松的大范围的修改项目的内容,无需对每个单一对象进行重复编辑,节省了大量的时间。
IV. 一般使用的场景

<hr>
环境资源——很多的山、树等,会预先做好再导成预制件
武器的炮弹——大炮发射的实例化炮弹预制件
玩家——玩家预制件会被放在各个关卡的起点位置
V.预制件的创建&使用

<hr>
5.1 创建

在文件夹右键 -> Create -> Prefab,就可以创建一个预制件;

将场景中想要实现复制的对象拖到这个预制件资源 -> 弹出提示框没选择Replace -> 就创建了一个可重复使用的资源模板;

此时, 原本的对象前面的图标也改变了,从线框 -> 实心 ;属性面板也多了Prefab属性。

预制件的编辑

<hr>
6.1 更改预制件本身
双击进入预制件,就会把关注集中在预制件本身,给他做修改、添加组件即可。同时预制件设置的操作,会在场景中所有由预制件生成的实例对象做更改。

6.2 更改实例对象

如果在预制件生成的实例对象做更改,修改后,需要在Inspector面板上方的Prefab栏 -> Overrides做操作

Revert All——还原到预制件
Apply All——修改预制件的值


还可以单独做更改,同时对应的Revert和All意思跟上面的一样。

6.3 实例属性优先于预制件
需要注意的点是,如果在预制件生成的实例对象里对某个值做了修改以后,这个值就会被覆盖掉,再在预制件中进行修改是不会改变当前实例对象的值的。

这个很好理解,预制件相当于所有子对象的父类,生成的实例子对象是子类,父类的操作总是在子类之前的,因此子类就具有修改所谓的优先性,属性的修改也优先于预制件。
预制件变体 Prefab Variant

<hr>

直接引用UP教程举例的关系图:

预制件变体是由原来预制件创建出来的新的预制件,在保留了原来预制件的基础上,还添加了新的特性,这些预制件变体还可以变出自己的变体,再由这些变体生成对应的不同的对象。

7.1 预制件特点
预制件变体继承基础预制件的属性
预制件变体的属性覆盖优先于基础预制件

7.2 预制件的创建
Project面板 -> 右键想要当作基础预制件的Prefab -> Create -> Prefab Variant
直接拖入想要当作预制件变体的对象,会有提醒是否创建预制件变体


预制件unpack成对象

<hr>
如果不想让预制件继续充当预制件了,在hierarchy窗口右键,Prefab -> unpack,就能解包成一个单纯的游戏对象了。

原文链接:https://blog.csdn.net/qq_41835314/article/details/125959462

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-5 11:53 , Processed in 0.103992 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表