Unity3D序列化ScriptableObject

Unity进阶:ScriptableObject使用指南 对于只用不变的数据,就适合用ScriptableObject做数据配置文件,再加上编辑模式下可实现数据持久化的特性,我们可以在Inspector面板中进行数据的配置与调试,有的时候是更加方便的,并且可以达到数据复用的目的,减少内存消耗。但是它无法在游戏打包发布后将数据的变动存储到磁盘中。因此我们要熟悉ScriptableObject的优缺点,结合实际需求选择使用。... 阅读详情

一、应用

把策划数值转为游戏数值


二、序列化类及数据结构类

public class HeroAssetObject: ScriptableObject{

	public Hero[] heroList;

}

注意前面的序列化标识:[System.Serializable]
[System.Serializable]
public class Hero{
	public int id;
	public int hp;
	public int ap;
	public int mp;
	public string name;
	public int age;
}



三、编辑器下创建序列化文件

public class CreateAssetFile{


	[MenuItem("Age/CreateHeroAsset")]
	public static void CreateHeroAsset()
	{
		if(!Directory.Exists(Application.streamingAssetsPath))
		{
			Directory.CreateDirectory(Application.streamingAssetsPath);
		}
		HeroAssetObject obAsset=new HeroAssetObject();
		obAsset.heroList=readHeroAssetData();
		AssetDatabase.CreateAsset(obAsset,"Assets/StreamingAssets/a.asset");


		BuildPipeline.BuildAssetBundle(obAsset,null,Application.streamingAssetsPath+"/a.assetbundle"
		                               ,BuildAssetBundleOptions.CollectDependencies,EditorUserBuildSettings.activeBuildTarget);

		AssetDatabase.Refresh();

	}

	public static Hero[] readHeroAssetData()
	{
		Hero[] heroList=null;
		string[] heroAssData= File.ReadAllLines(Application.dataPath+"/HeroAssets.csv");
		if(heroAssData!=null)
		{
			heroList=new Hero[heroAssData.Length-1];
			for(int i=1;i<heroAssData.Length;i++)
			{
				heroList[i-1]=new Hero();
				string[] infors=heroAssData[i].Split(',');
				heroList[i-1].id=int.Parse(infors[0]); 
				heroList[i-1].hp=int.Parse(infors[1]);
				heroList[i-1].ap=int.Parse(infors[2]);
				heroList[i-1].mp=int.Parse(infors[3]);
				heroList[i-1].age=int.Parse(infors[4]);
				Debug.Log("I:"+i+"  heroAssData:"+heroAssData[i]);
			}
		}
		return heroList;
	}
}

四、游戏中动态加载资源

public class Main : MonoBehaviour {
	
	public HeroAssetObject assObject;

	// Use this for initialization
	void Start () {
		StartCoroutine(loadHeroAsset());
	}

	IEnumerator loadHeroAsset()
	{
		WWW www=new WWW("file://"+Application.streamingAssetsPath+"/a.assetbundle");
		yield return www;
		if(www.error==null)
		{
			AssetBundle ab=www.assetBundle;
			HeroAssetObject heroAssOb=(HeroAssetObject)ab.mainAsset;

			assObject=heroAssOb;

			ab.Unload(false);
			ab=null;
		}
		else
		{
			Debug.Log("error:"+www.error);
		}

		www.Dispose();
		www=null;
	}
}
Unity进阶之ScriptableObject ScriptableObject是什么ScriptableObject是Unity提供的一个数据配置存储基类它是一个可以用来保存大量数据的数据容器就像是可以自定义的数据资源文件它是一个类似MonoBehavior的基类需要我们继承它来进行使用它的主要作用是1.数据复用(多个对象用同一个数据)2.配置文件(配置游戏中的数据)3.编辑模式下的数据持久化数据复用比如一个子弹对象以前我们通过面向对象的思想去做的话会写一个继承MonoBehaviour的脚本。 阅读详情

相关推荐

Unity3D ScriptableObject序列化的应用

ScriptableObject类型经常用于存储一些unity3d本身不可以打包的一些object,比如字符串,一些类对象等。用这个类型的子类型,则可以用BuildPipeline打包成assetbundle包供后续使用,非常方便。这样除了playerpref和c#文件读取外,另外的一种存取一些数据对象的方法

WSHBlog的专栏 1456

Unity3D 学习笔记5 ——使用ScriptableObject进行序列化

ScriptableObject类型经常用于存储一些unity3d本身不可以打包的一些object,比如字符串,一些类对象等。用这个类型的子类型,则可以用BuildPipeline打包成assetbundle包供后续使用,非常方便。这样除了playerpref和c#文件读取外,另外的一种存取一些数据对象的方法 [csharp] view plain copy  prin

linshuhe1的专栏 8242

网络调试和分析工具 Proxyman Premium

它支持MacOS、iOS和iPadOS等操作系统,提供丰富的功能,如查看和编辑HTTP/HTTPS请求和响应、设置断点、过滤请求等。Proxyman Premium还支持WebSocket、GraphQL和gRPC等现代网络协议调试,并通过直观且图形化的操作界面,使用户能高效地监控和操纵网络数据流。此外,它还具备多种高级功能,如WebSocket支持、DNS欺骗、自定义SSL证书等,为开发人员提供极大的便利。同时,由于软件版本更新和界面调整,上述步骤可能会有所变化,建议您参考最新版本的官方文档进行操作。

llhf688的博客 2001

Unity进阶:ScriptableObject 使用指南

Unity进阶:ScriptableObject 使用指南

明明明的博客 1万+

数据标注的下一代SOP,可能不是Word,而是一段Prompt

再给几个反例:“这个只是正常纹理,不算。真正用于数据生产的Prompt,可能至少包含:任务定义、正例、反例、边界案例、优先级、输出格式、验收逻辑。一个项目100个人,如果100个人对这句话有100种理解,最后返工的就不是一个框,而可能是几十万帧数据。一个项目启动以后,项目经理先研究SOP,培训组长,组长再培训标注员,最后几百个人按照同一套规则干活。实际上一个成熟的项目经理,最重要的能力之一,就是:把客户的业务语言翻译成生产规则。真正让项目难交付的,从来不是80%的普通数据,而是那20%的长尾数据。

AI数据标注猿 296

GROMACS自由能景观图绘制全流程:从PCA分析到Origin 3D可视化(附避坑指南)

本文详细解析了使用GROMACS绘制自由能景观图的全流程,涵盖从PCA分析、数据预处理、自由能计算到最终在Origin中进行3D可视化的完整步骤。文章重点分享了数据处理与格式转换中的常见“避坑”指南,帮助研究者从分子动力学轨迹中有效提取并解读构象自由能信息,深化对生物大分子动力学过程的理解。

oauth7security的博客 309

Unity——ScriptableObject

ScriptObject

m0_52021450的博客 4279

从零搭建A股量化交易系统:开源框架选型与实战部署指南

本文详细介绍了从零搭建A股量化交易系统的完整流程,重点分析了开源框架VNPY和QMT的选型与实战部署。内容涵盖系统架构设计、策略开发、性能优化及实盘过渡方案,为开发者提供了一套完整的A股实盘量化交易解决方案,助力高效构建稳定可靠的量化交易系统。

sugar的博客 1276

Unity3D Json序列化与反序列化存储到ScriptableObject

不懂ScriptableObject创建的请看之前文章ScriptableObject的创建。拿到策划给我们这样一个Excel表格,我们需要先通过Json在线编辑器将它转换为Json,看图: 将Excel内容全选复制转换成这样: 复制内容丢到JSON在线编辑器里边,并且给内容添加一个大括号,以及添加个属性名,最后把最后一个‘,’去掉,看图: 然后点击这个东西将内容复制下来,在Unity某个文件

阿童木的博客 6785

lumerical-环形谐振器

利用mode求解器优化得到所需的环的总长度,即环形器的半径,然后通过varFDTD得到光场分布和透过率.

m0_61776728的博客 2189

从零开始:在Unity中使用Dynamic Bone实现角色骨骼自然抖动(以女性角色胸部为例)

本文详细介绍了在Unity中使用Dynamic Bone插件实现角色骨骼自然抖动的完整流程,特别以女性角色胸部为例。从插件导入、骨骼系统基础到Dynamic Bone组件配置和参数调优,提供了全面的技术指导。文章还包含性能优化技巧和常见问题解决方案,帮助开发者快速掌握这一物理效果实现方法。

weixin_28728495的博客 457

在Unity3D中使用ScriptableObject进行序列化

ScriptableObject类型经常用于存储一些unity3d本身不可以打包的一些object,比如字符串,一些类对象等。用这个类型的子类型,则可以用BuildPipeline打包成assetbundle包供后续使用,非常方便。这样除了playerpref和c#文件读取外,另外的一种存取一些数据对象的方法 [csharp] view plaincopyprint?

anmofeng的专栏 965

华为OD机试 - 项目规划 - 深度优先搜索dfs(Java 2024 C卷 100分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 1153

在Unity3D中使用ScriptableObject脚本对象化进行序列化

ScriptableObject类型经常用于存储一些unity3d本身不可以打包的一些object,比如字符串,一些类对象等。用这个类型的 子类型,则可以用BuildPipeline打包成assetbundle包供后续使用,非常方便。这是除了PlayerPrefs和c# XML文件读取外,另外 的一种存取一些数据对象的方法 using UnityEngine;     public cl

582

详解Xilinx FPGA高速串行收发器GTX/GTP(6)--Pattern Generator/Pattern Checker

详解Xilinx FPGA高速串行收发器GTX/GTP(6)--Pattern Generator/Pattern Checker

孤独的单刀 1626

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

<U3D>在Unity3D中使用ScriptableObject进行序列化

ScriptableObject类型经常用于存储一些Unity3D本身不可以打包的一些object,比如字符串,一些类对象等。用这个类型的子类型,则可以用BuildPipeline打包成assetbundle包供后续使用,非常方便。这样除了playerpref和c#文件读取外,另外的一种存取一些数据对象的方法 [csharp] view plain copy  prin

wocalage的博客 964

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

关于ScriptableObject

public class TEST { [MenuItem(“LCH/lch/test”, false, 0)] public static void NM() { //创建一个ScriptableObject实例 //testScriptableObjec tt = ScriptableObject.CreateInstance(); //tt.test();//调用ScriptableObject序列化数据 //string file = “Assets/” + “test.asset”; //Asse

LCHUIHUI的博客 282

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Unity3D之ScriptableObject学习笔记

不同与C#提供的Serializable序列化功能,ScriptableObject是Unity3D提供的一个数据存储类,我们接下来学习一下这个类的功能。 官方文档 http://docs.unity3d.com/Manual/class-ScriptableObject.html http://docs.unity3d.com/ScriptReference/ScriptableObjec...

yuyingwin的专栏 935

Unity中的实例化、序列化与ScriptableObject的使用

实例化: Unity中实例化游戏物体和销毁游戏物体 Unity3D中Prefab的简单介绍 序列化: 关于序列化Serializable Script Serialization Unity 3D 序列化(Serialize) Unity-Unity中的序列化 ScriptableObject: 关于ScriptableObject的使用 简单说说ScriptableObject ...

皮皮#2500 1551
上一篇: NGUI笔记1之 UICamera
下一篇: 中文Chinese.txt文件加载读取
zuig2
博客等级 码龄15年 6粉丝 23原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zuig2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值