Unity 的 ScriptableObject

简介

Unity官方说法:ScriptableObject 是一个可独立于类实例来保存大量数据的数据容器。ScriptableObject 的一个主要用例是通过避免重复值来减少项目的内存使用量。如果项目有一个预制件在附加的 MonoBehaviour 脚本中存储不变的数据,这将非常有用。

说人话就是ScriptObject可以作为数据容器,本质上是一个配置文件,我们可以用来作为自定义的数据资源文件。

就像 MonoBehaviour 一样,ScriptableObject 派生自 Unity 基本 Object 类,但与 MonoBehaviour 不同,不能将 ScriptableObject 挂载到到Game Object上。

作用

由于每次实例化Prefab时,都会产生单独的数据副本。这种情况下可以不使用该方法并且不存储重复数据,而是使用 ScriptableObject 来存储数据,然后通过所有Prefab的引用访问数据。这意味着内存中只有一个数据副本。

Unity编辑器可以在编辑时和运行时将数据保存到 ScriptableObject,因为 ScriptableObject 使用 Editor 命名空间和 Editor 脚本。但是在游戏打包出来之后不能使用 ScriptableObject 来保存数据,但可以使用在开发期间设置的 ScriptableObject 资源中保存的数据。意思就是说,ScriptableObject只能在编辑器中进行数据持久化。因此Scriptable的正确打开方式是用来做各类配置文件,以及存储不变的数据(比如物品属性配置、敌人属性配置)等,而不是用来作为游戏存档的方式。

示例

比如在游戏中我们可能有很多种怪物,对于每一种怪物,可以创建一个SO文件作为其属性配置(如生命力、攻击力等)。然后在该怪物的Prefab上引用该SO作为其属性的数据源,就可以起到当创建了多个该怪物的实例时共享一份配置数据的作用。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇