当前位置: 首页 > news >正文

西安做网站seo网站建设捌金手指下拉十七

西安做网站seo,网站建设捌金手指下拉十七,前端开发,福田祥菱m正文 主要方法#xff1a; ScriptableObjectPlayerPrefsJSONXML数据库#xff08;如Sqlite#xff09; 1. PlayerPerfs PlayerPrefs 存储的数据是全局共享的#xff0c;它们存储在用户设备的本地存储中#xff0c;并且可以被应用程序的所有部分访问。这意味着#xf…正文 主要方法 ScriptableObjectPlayerPrefsJSONXML数据库如Sqlite 1. PlayerPerfs PlayerPrefs 存储的数据是全局共享的它们存储在用户设备的本地存储中并且可以被应用程序的所有部分访问。这意味着无论在哪个场景、哪个脚本中只要是同一个应用程序中的代码都可以读取和修改 PlayerPrefs 中的数据。 这意味着耦合性的增加、安全性的降低。它适合存储少量的基本数据比如玩家的偏好设置、游戏设置、游戏进度等但不适合存储大量或复杂的数据结构。 注意 每次Set完数据要调用PlayerPrefs.Save()把数据写入磁盘。Get有两个参数第一个是键名第二个是没找到时传入的默认值。 int highScore 1000; PlayerPrefs.SetInt(HighScore, highScore); // 记得保存 PlayerPrefs.Save();// 没找到就返回3 int score PlayerPrefs.GetInt(Score, 3);2. ScriptableObject ScriptableObject的值在播放模式之后不会恢复原样会保留修改 可以用于只读和读写两种数据不过原则上还是只用于只读数据。 ScriptableObject 并不依赖于游戏对象GameObject也不受场景加载和卸载的影响。它的生命周期是由 Unity 引擎管理的。 使用流程 派生自ScriptableObject创建基类实例化后由编辑器对实例进行配置其他C#脚本使用某个实例合理使用OnValidate()方法这是ScriptableObject中的值更改时触发的事件但是仅限在编辑器使用 下述代码在数值发生变化时触发定义的valueChanged事件。注意需要在其他脚本中向 valueChanged 事件添加侦听器才能响应 // 代码源自参考链接2 using UnityEngine; using UnityEngine.Events;[CreateAssetMenu(fileName NewWeapon, menuName Game/Weapon)] public class WeaponScriptableObject : ScriptableObject {public string weaponName;public int damage;public Sprite icon;[SerializeField, Range(0, 100)]private int maxHealth;// Define a UnityEvent with no argumentspublic UnityEvent valueChanged;#if UNITY_EDITORprivate void OnValidate(){// This method is called in the Unity Editor whenever a value is changed.// Invoke the UnityEvent when values change.if (UnityEditor.EditorApplication.isPlaying){valueChanged.Invoke(); // Fire the UnityEvent}} #endif }这里要注意的是类似于[CreateAssetMenu(fileName mySharedData, menuName SharedData/MySharedData, order 1)]这样的东西意思是 fileName新创建实例的默认文件名为mySharedData。menuName在“Assets/Create”菜单中显示的类型条目名称为SharedData下的MySharedData。order菜单项在“Assets/Create”菜单中的位置为1显示靠前的优先级 由于SO尽量存储运行时不更改的数据所以要修改当前的生命值会考虑如下方法。此处PlayerXP实际上是个引用在Unity中当一个类的成员是另一个类的实例时默认情况下它就是引用类型不需要额外的标记我是对比着[SerializeReference]来看见下文 public class PlayerXP {public int XP 100; }public class PlayerData : ScriptableObject {public PlayerXP PlayerXP; } PlayerData playerData GetComponentPlayerData(); playerData.PlayerXP.XP 200;注引用类型的序列化通常会占用更多的存储空间和加载时间性能降低 3. 序列化Json、XML与二进制 using UnityEngine;[System.Serializable] public class PlayerData {public string playerName;public int playerScore; }关于序列化 必须是public类其中的字段或者属性必须是可序列化的类中的方法不会被序列化构造函数不可以被序列化 不可以序列化的数据类型 静态类或静态成员Static Members委托Delegate事件Event指针Pointer索引器Indexers 静态成员是属于整个类的但是序列化和反序列化是构造一个类的实例的 // 保存 string json JsonUtility.ToJson(sourceObject); System.IO.File.WriteAllText(playerData.json, json); // 读取 string json System.IO.File.ReadAllText(playerData.json); SomeClass loadedPlayer JsonUtility.FromJsonSomeClass(json);json是字符串文本XML是标记语言本身还是文本二进制就是01序列。二进制在数据存储和传输的效率、紧凑性和速度上占有优势但丧失了内容的可读性 二进制有很多种方案 protobuf (Protocol Buffers谷歌研发的一种二进制序列化格式)MessagePack 我们可以在官方仓库找到使用说明Github - MessagePack-CSharp 注几个含Serialize的相关属性 [Serializable]是一个 C# 中的特性它告诉编译器这个类可以被序列化。[SerializeReference] 是 Unity 2019.3 引入的新特性用于处理多态对象的序列化使得可以在 Inspector 窗口中为该字段分配任意继承自同一父类的对象。[SerializeField]这个是把Private变量暴露到Inspector中的跟上面那俩没关系 注标记为 [Serializable] 的类需要自行确保其内容是可序列化的。该标记的作用仅是告诉编译器这个类可以被序列化但是不对内容做任何保证如果存在不可被序列化的字段则会被忽略不会引起报错。此外还要避免类中存在循环引用例如类 A 包含类 B 的实例而类 B 又包含类 A 的实例 // example using UnityEngine; using System;[Serializable] public class Shape {public float area;public virtual void Draw() { } }[Serializable] public class Circle : Shape {public float radius;public override void Draw(){Debug.Log(Drawing a circle);} }[Serializable] public class Rectangle : Shape {public float width;public float height;public override void Draw(){Debug.Log(Drawing a rectangle);} }public class ShapeHolder : MonoBehaviour {[SerializeReference]public Shape shape; }4. 数据库 数据库通常用于存储大量结构化数据例如用户信息、游戏配置、游戏关卡数据、成就和统计信息等。相较于ScriptableObject、PlayerPrefs、JSON和XML文件数据库的优势在于能够更灵活地管理和查询大量数据并支持复杂的数据结构和关联查询。 数据库的优势包括 数据结构灵活数据库可以存储和管理复杂的数据结构支持表与表之间的关联适用于需要大量结构化数据的场景。查询功能强大数据库引擎提供强大的查询功能可以进行复杂的数据筛选、排序和统计分析。数据持久化数据库中的数据可以持久保存不受应用程序生命周期的影响适用于长期存储和管理数据。并发处理数据库引擎通常支持并发处理能够处理多个用户同时对数据进行读写的情况。数据安全性数据库可以提供数据加密、权限控制等安全功能保护数据不被未授权访问。 参考与进一步阅读 PavCreations - Data persistence or how to save / load game data in Unity Medium - A Beginner’s Guide to Storing and Retrieving Data in Unity Medium - “How to Harness the Power of Scriptable Objects in Unity” CSDN - 个人技术总结——Unity3D ScriptableObject实现多存档 CSDN - 【图文详解】Unity存储游戏数据的几种方法
http://www.w-s-a.com/news/424934/

相关文章:

  • 生物公司网站建设方案wordpress自定义字段调用
  • 静态网站公用头部如何调用标题wordpress自动采集翻译插件怎么用
  • 网站做单链 好不好网站营销不同阶段的网站分析目标
  • 网线制作颜色顺序兰州网站推广优化
  • 北京沙河教做网站的企业融资以什么为基础
  • 给网站添加百度地图绵阳做绵阳做网站网站
  • 用电脑做服务器制作网站东莞营销网站建设
  • 网站需要怎么做wordpress 重装
  • 做电影网站赚钱的方法世界500强企业排名2023
  • 领卷网站怎么做的西宁设计网站建设
  • 东莞网站建设价位软件开发税率是13%还是6
  • 企业网站建设一条龙如何在网上推广自己
  • 成品网站制作公司企梦网站建设
  • 网站开发微信授权登录ftp 如何 更新 wordpress
  • icp备案和网站不符查询公司的网站备案
  • 万江营销型网站建设泰安网站建设制作电话号码
  • 做网站是用ps还是ai服饰东莞网站建设
  • 只做一页的网站多少钱网站开发就业趋势
  • 陈村网站建设有哪些网站可以做店面设计
  • 查询网站注册信息wordpress 照片墙
  • 成都网站设计服务商室内设计设计师网站推荐
  • 企业建站系统cms百度网址ip
  • wordpress 代码编辑插件下载搜索引擎优化seo课程总结
  • 韩都衣舍网站建设的改进邯郸公众号小程序制作
  • 上海设计网站建设在线视频制作
  • 东营高端网站建设新建网站如何让百度收录
  • wordpress怎么生成网站地图微网站平台怎样做网站
  • 同安区建设局网站招投标公众号简介有趣的文案
  • 江苏州 网站制作网上宣传方法有哪些
  • 做网站时怎样申请域名郑州制作网站公司