【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 21270|回复: 16

[已解决] 什么是预制体??使用预制体有什么好处?

[复制链接]
发表于 2014-8-18 15:54:37 | 显示全部楼层 |阅读模式
RT,经常会看到Unity中使用预制体,我还没用过,对这块很迷惑,
请解释下一什么是预制体??使用预制体有什么好处?
发表于 2014-8-18 16:33:36 | 显示全部楼层
本帖最后由 jim-0204 于 2014-8-18 16:36 编辑

预制体 = 预设
翻译问题~~~
{:soso_e113:}

预设创建:
直接把物体直接拖动到项目视窗中,会显示为预设实例物体

预设主要有2个特性:
预设也属于一种资源
1.重名型 —— 快速/方便的,创建大量可以使用重复的资源,这种创建时通过预设的实例化来完成的,预设完成后可以使用
Instantiate来完成实例化,来创建多个实例,从而实现预设的重名目的,而所有实例化物体又链接到原本的预设物体中,从而修改
预设的实例化物体时所有的创建的实例化物理的参数都会随着预设物体修改的值而产生变化(更新),此又称为物体的继承性。
也可以对某一个实例物体进行单独的修改,让其与其他物体产生区别不用,此称只为物体的重载性
可以直接拖动预设物体到场景等,可以重复进行
在一个场景中有多个预设的同样的物体,可以在物体中选中该物体所属的预设物体。

2.运行实例化

可以在程序运行时来执行实例化操作。
创建预设物体,在脚本中引用预设物体。
相对而言脚本中代码也比较简洁,需要修改也比较简单只要对预设物体进行修改就可以了,不需要添加其他修改代码,
与普通脚本相比预设创建的实例化物体,全部都是预设物体的克隆,可以提高程序运行效率和节省内存空间


:):):):)
 楼主| 发表于 2014-8-18 16:37:09 | 显示全部楼层
预设物体的克隆 是什么意思? 假如我需要创建一支军队,使用预制体的话,整个军队都是一个物体的克隆,那么在战斗的时候动作会不会都是一样的。
发表于 2014-8-18 16:43:25 | 显示全部楼层
比如创建一支军队,那么创建一个预设物体,拖入在场景中,军队有多少人拖入几次,没个预设物体可以单独去修改参数,所以可以保持每个动作不同参数不同~

至于克隆物体主要体现于脚本,比如创建一个5*5的砖墙,那么使用运行实例化创建就比普通在代码中绘制输出来的简单和快捷。。。
 楼主| 发表于 2014-8-18 16:45:02 | 显示全部楼层
那么,每个军人的数据都不一样,他们还是一个预制体吗?
都有哪些情况会造成预制体不再是原来的预制体的克隆?
发表于 2014-8-18 16:47:57 | 显示全部楼层
jim-0204 发表于 2014-8-18 16:43
比如创建一支军队,那么创建一个预设物体,拖入在场景中,军队有多少人拖入几次,没个预设物体可以单独去修 ...


预制体的克隆并不是体现在脚本上
预制体在任何时候使用都是一个克隆体,在程序执行的时候尤其方便而已。
发表于 2014-8-18 16:53:28 | 显示全部楼层
预设体还是一个的,比如你设计一个军人的模型,设计成预设体,可以多次的拖动进场景中,然后按你自己的需要给每个军人添置不同的动作等等。

当然不是修改预设体的参数,是设置预设体实例化以后的参数。。。所以预设体还是同一个~!
发表于 2014-8-18 16:55:59 | 显示全部楼层
鼯鼠 发表于 2014-8-18 16:47
预制体的克隆并不是体现在脚本上
预制体在任何时候使用都是一个克隆体,在程序执行的时候尤其方便而已 ...

3Q,学习到了。。。

发表于 2014-8-18 17:09:19 | 显示全部楼层
jim-0204 发表于 2014-8-18 16:53
预设体还是一个的,比如你设计一个军人的模型,设计成预设体,可以多次的拖动进场景中,然后按你自己的需要 ...


预制体会被破坏,当组成预制体的部分不完整的时候,预制体会变成普通的gameObject 。
具体的资料 百度一下吧
发表于 2014-8-18 17:21:02 | 显示全部楼层
鼯鼠 发表于 2014-8-18 17:09
预制体会被破坏,当组成预制体的部分不完整的时候,预制体会变成普通的gameObject 。
具体的资料 百度 ...

破坏?
是指预设以后添加/删除一个组件和添加/删除一个子对象以后导致的预设体链接破坏吗????
 楼主| 发表于 2014-8-18 17:23:19 | 显示全部楼层
jim-0204 发表于 2014-8-18 17:21
破坏?
是指预设以后添加/删除一个组件和添加/删除一个子对象以后导致的预设体链接破坏吗????

测试删除子物体会破坏其他的求完整解答

发表于 2014-8-18 17:26:37 | 显示全部楼层
添加/删除一个子对象以后会导致链接被破坏
确认该行为将破坏链接,这样,更改预置源将不再影响已破坏了链接的实例。要恢复该链接,你可以在实例的检视视图中单击Reconnect或Apply按钮。

Reconnect将丢弃与预置源的所有差别。

Apply将复制所有差别到预置源中(包括所有其它预置实例)

发表于 2014-8-18 17:30:18 | 显示全部楼层
本帖最后由 夜行的猫仔 于 2014-8-18 17:31 编辑
jim-0204 发表于 2014-8-18 17:26
添加/删除一个子对象以后会导致链接被破坏
确认该行为将破坏链接,这样,更改预置源将不再影响已破坏了链 ...


额。。。。。。。。。。。
这样的话不仅仅是你丢失了一个组件,而是把所有预制体全部都删除了这个组件。
这就好比你去掉了一个军人的胳膊,点了apply,所有军人都是独臂模型了。(这是用模型做例子,实际上不会发生这样的事情,除非模型是零件拼成的)
发表于 2014-8-18 17:33:23 | 显示全部楼层
夜行的猫仔 发表于 2014-8-18 17:30
额。。。。。。。。。。。
这样的话不仅仅是你丢失了一个组件,而是把所有预制体全部都删除了这个组件 ...

那如果预设体被破坏以后,变成普通的gameObject,如何恢复原本的链接呢????Reconnect吗?
发表于 2014-8-18 17:37:50 | 显示全部楼层
本帖最后由 夜行的猫仔 于 2014-8-18 17:39 编辑

一般破坏预制体都是有原因的,并不是不小心的损坏。
如果还想用原来的预制体,销毁这个,再从project里面拖一个出来用就可以了,修复要麻烦很多。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-5-13 20:47

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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