news 2026/3/30 10:53:57

1.6 ScriptableObject

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1.6 ScriptableObject

1.ScritableObject简介


1.ScritableObject简介

ScritableObject是继承自UnityEngine.Object的特殊基类,用于保存数据;它是纯数据 文件,独立于GameObject存在,没有生命周期函数,只负责存储数据(数值,素材引用,配置 等),数据保存在.asset格式的资源文件中,可在Inspector面板直接编辑
usingUnityEngine;// [CreateAssetMenu] 让你能在Project窗口右键创建该资源(新手首选)[CreateAssetMenu(fileName="NewCharacterConfig",// 默认文件名menuName="MyGame/Character Config"// 右键菜单路径(MyGame是自定义分类))]publicclassCharacterConfig:ScriptableObject{// 可序列化的字段(public或加[SerializeField]),会在Inspector显示[Header("基础属性")]// 分组注释,方便阅读publicstringcharacterName;publicintmaxHP=100;publicfloatmoveSpeed=5f;[Header("战斗属性")]publicintattackDamage=10;publicfloatattackRange=2f;[Header("素材引用")]publicSpritecharacterIcon;// 引用贴图资源publicAudioClipattackSound;// 引用音频资源}

发布游戏的核心方案:将ScriptableObject的结构化数据序列化为 JSON 文件,保存到 Unity 的PersistentDataPath(唯一安全的运行时持久化路径);游戏启动时,再从 JSON 文件加载数据并覆盖回ScriptableObject实例
usingUnityEngine;usingSystem.IO;// 1. 定义与ScriptableObject数据结构一致的普通C#类(用于序列化,避免直接序列化ScriptableObject)[System.Serializable]publicclassGameDataSaveModel{publicintplayerLevel;publicintgold;publicfloatplayerHP;// 从ScriptableObject赋值到序列化模型publicstaticGameDataSaveModelFromScriptableObject(GameDatadata){returnnewGameDataSaveModel{playerLevel=data.playerLevel,gold=data.gold,playerHP=data.playerHP};}// 从序列化模型赋值回ScriptableObjectpublicvoidToScriptableObject(GameDatadata){data.playerLevel=this.playerLevel;data.gold=this.gold;data.playerHP=this.playerHP;}}// 2. 改造ScriptableObject,添加运行时保存/加载方法[CreateAssetMenu(fileName="GameData",menuName="MyGame/GameData")]publicclassGameData:ScriptableObject{publicintplayerLevel=1;publicintgold=1000;publicfloatplayerHP=100f;// 保存路径(PersistentDataPath:不同平台的持久化路径,打包后可读写)privatestringSavePath=>Path.Combine(Application.persistentDataPath,"GameDataSave.json");// 运行时保存数据到JSON文件(编辑器/打包后都可用)publicvoidSaveRuntimeData(){// 创建序列化模型并赋值GameDataSaveModelmodel=GameDataSaveModel.FromScriptableObject(this);// 序列化为JSON字符串(带格式化,方便查看)stringjson=JsonUtility.ToJson(model,true);// 写入文件(不存在则创建,存在则覆盖)File.WriteAllText(SavePath,json);Debug.Log($"运行时数据已保存到:{SavePath}");}// 运行时加载JSON数据到ScriptableObjectpublicvoidLoadRuntimeData(){// 检查文件是否存在if(!File.Exists(SavePath)){Debug.LogWarning("保存文件不存在,使用默认数据");return;}// 读取JSON字符串stringjson=File.ReadAllText(SavePath);// 反序列化为模型GameDataSaveModelmodel=JsonUtility.FromJson<GameDataSaveModel>(json);// 赋值回ScriptableObjectmodel.ToScriptableObject(this);Debug.Log($"已从{SavePath}加载数据:等级={playerLevel},金币={gold}");}}// 3. 测试脚本(挂载到启动场景的GameObject)publicclassGameDataManager:MonoBehaviour{publicGameDatagameData;// 拖拽赋值你的GameData.assetvoidStart(){// 游戏启动时自动加载保存的数据gameData.LoadRuntimeData();}voidUpdate(){// 按S键保存数据if(Input.GetKeyDown(KeyCode.S)){gameData.playerLevel+=1;gameData.gold+=500;gameData.playerHP-=10f;gameData.SaveRuntimeData();}// 按R键重置数据(测试用)if(Input.GetKeyDown(KeyCode.R)){gameData.playerLevel=1;gameData.gold=1000;gameData.playerHP=100f;gameData.SaveRuntimeData();Debug.Log("数据已重置并保存");}}}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 16:51:05

亚马逊、temu、希音等平台自养号采购、代采系统怎么搭建?

构建稳定、安全、高效的自养号采购系统&#xff0c;远不止于批量注册账号&#xff0c;而是一项需要从技术底层到操作流程全方位设计的系统工程。其关键在于创建多个独立、可信的数字身份&#xff0c;形成可长期运作的采购网络。以下是构建此类系统的核心要素与实施路径。一、环…

作者头像 李华
网站建设 2026/3/29 11:28:01

智慧边检空间智能平台建设方案——基于空间视频感知与统一空间智能底座的新一代边检监管体系

智慧边检空间智能平台建设方案——基于空间视频感知与统一空间智能底座的新一代边检监管体系建设单位&#xff1a;镜像视界&#xff08;浙江&#xff09;科技有限公司一、建设背景&#xff1a;边检监管进入“全过程智能化”阶段随着国际人员流动规模持续扩大&#xff0c;口岸边…

作者头像 李华
网站建设 2026/3/30 3:35:21

10种实测靠谱的降ai率工具名单:教你如何科学降低ai率,实现ai降ai,目前最全的免费降低ai率教程。

又到了论文开题季&#xff0c;很多同学发现&#xff0c;自己用AI辅助写完的论文&#xff0c;AIGC率高得吓人。明明只是润色&#xff0c;检测却显示“高风险AI生成”。面对这个论文降ai的难题&#xff0c;盲目手改往往收效甚微。 别慌。市面上已经有很多工具可以辅助降低ai率。今…

作者头像 李华
网站建设 2026/3/24 6:01:23

Node.js 真的是单线程?前端老铁别被忽悠瘸了!

Node.js 真的是单线程&#xff1f;前端老铁别被忽悠瘸了&#xff01;Node.js 真的是单线程&#xff1f;前端老铁别被忽悠瘸了&#xff01;先给“单线程”这仨字儿上柱香主线程日常&#xff1a;一个 event loop 的社畜生活libuv&#xff1a;藏在床底下的“时间管理大师”Worker …

作者头像 李华
网站建设 2026/3/12 5:34:37

HDFS 在大数据领域的数据存储发展方向

HDFS 在大数据领域的数据存储发展方向 关键词:HDFS、大数据存储、分布式文件系统、数据湖、存储架构、数据管理、未来趋势 摘要:本文深入探讨了Hadoop分布式文件系统(HDFS)在大数据领域的数据存储发展方向。我们将从HDFS的基本原理出发,分析其当前的技术架构和局限性,然后详…

作者头像 李华
网站建设 2026/3/26 4:54:09

如何构建生物制药企业一体化管理体系,赋能全产业链协同?

某国资体系生物技术公司是从事传染病相关研究和生物制品生产的机构&#xff0c;是一家集科研、生产、销售以及研究生培养为一体的综合性生物制药企业。 企业组织机构庞大、分布地域广&#xff0c;在管理行涉及的核心业务包括产品管理、批号管理、生产过程管理、设备管理、质量管…

作者头像 李华