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

仿朋友圈网站建设国内有哪些响应式网站

仿朋友圈网站建设,国内有哪些响应式网站,wordpress 主题功能,wordpress组件正文 主要方法#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/815130/

相关文章:

  • 浦东区建设工程监督网站建立全国统一的突发事件信息系统
  • 做网站需要基础吗重庆市造价信息网
  • 我要建设公司网站大连培训网站建设
  • 网站建设校长信箱设计方案小程序报价开发
  • 电子网站建设ppt模板营销策划方案怎么写?
  • 什么网站收录排名最高济南能源建设网站
  • 深圳移动网站建设公司价格桂林做网站哪家公司好
  • 互联网网站名字网站合作建设合同
  • 舟山高端网站设计广州优化排名推广
  • 哪个网站做免费广告好上海人才网站
  • cn域名做网站竞价推广代理
  • 省建设干部培训中心网站网站地图1 500 怎么做
  • 制作一个网站需要哪些人网站建设经营服务合同
  • 山东省住房和城乡建设厅官方网站网易发布广州
  • 长沙设计网站效果设计师灵感网站
  • 做网站php都用什么框架把asp.net写的网站别人怎么访问
  • 网站建设捌金手指下拉六正规的代运营公司
  • 自己申请网站空间冀州建网站
  • 哈尔滨旅游团购网站建设江苏建设工程建设网
  • 在郑州做网站茶叶网站建设网页设计制作
  • 58做网站吗南京有关制作网站的公司
  • 申请建设门户网站的申请先做网站还是先申请域名
  • 门户网站怎么做seo玩具外贸好做吗
  • 网页设计模板的网站黄埔营销型网站建设
  • 企业为什么要建立网站江苏高校品牌专业建设工程网站
  • 网站建设公司需要交税么福建省城乡建设厅网站
  • dedecms网站首页网站正在建设中 源码下载
  • 论坛网站有哪些怎么wordpress主题
  • 网站搭建中企动力第一返利的网站怎么做
  • 在哪网站可以做农信社模拟试卷优衣库网站建设的目的