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

做代理记账网站南京网站建设丁豆褒

做代理记账网站,南京网站建设丁豆褒,网络组建与安全通知,郑州企业网站Unity中将字典序列化,在预制体上能够看到字典的内容,也可以直接在预制体上拖拽给字典赋值 直接上代码 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine;public class SerializableD…

Unity中将字典序列化,在预制体上能够看到字典的内容,也可以直接在预制体上拖拽给字典赋值

直接上代码

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;public class SerializableDic
{
}[Serializable]
public class SerializableDic<TKey, TValue> :SerializableDic,ISerializationCallbackReceiver,IDictionary<TKey, TValue>{[SerializeField] private List<SerializableKeyValuePair> list = new List<SerializableKeyValuePair>();[Serializable]private struct SerializableKeyValuePair{public TKey Key;public TValue Value;public SerializableKeyValuePair(TKey key, TValue value){Key = key;Value = value;}}#region key indexprivate Dictionary<TKey, int> KeyPositions{get { return _keyPositions.Value; }}private Lazy<Dictionary<TKey, int>> _keyPositions;public SerializableDic(){_keyPositions = new Lazy<Dictionary<TKey, int>>(MakeKeyPositions);}#endregionprivate Dictionary<TKey, int> MakeKeyPositions(){Dictionary<TKey, int> dictionary = new Dictionary<TKey, int>(list.Count);for (var i = 0; i < list.Count; i++){dictionary[list[i].Key] = i;}return dictionary;}public void OnBeforeSerialize(){}public void OnAfterDeserialize(){_keyPositions = new Lazy<Dictionary<TKey, int>>(MakeKeyPositions);}#region IDictionary<TKey, TValue>/// <summary>///  array[index]   dic[key]/// </summary>/// <param name="key"></param>public TValue this[TKey key]{get => list[KeyPositions[key]].Value;set{SerializableKeyValuePair pair = new SerializableKeyValuePair(key, value);if (KeyPositions.ContainsKey(key)){list[KeyPositions[key]] = pair;}else{KeyPositions[key] = list.Count;list.Add(pair);}}}public ICollection<TKey> Keys{get { return list.Select(tuple => tuple.Key).ToArray(); }}public ICollection<TValue> Values{get { return list.Select(tuple => tuple.Value).ToArray(); }}public void Add(TKey key, TValue value){if (KeyPositions.ContainsKey(key))throw new ArgumentException("An element with the same key already exists in the dictionary.");else{KeyPositions[key] = list.Count;list.Add(new SerializableKeyValuePair(key, value));}}public bool ContainsKey(TKey key){return KeyPositions.ContainsKey(key);}public bool Remove(TKey key){if (KeyPositions.TryGetValue(key, out var index)){KeyPositions.Remove(key);list.RemoveAt(index);for (var i = index; i < list.Count; i++)KeyPositions[list[i].Key] = i;return true;}elsereturn false;}public bool TryGetValue(TKey key, out TValue value){if (KeyPositions.TryGetValue(key, out var index)){value = list[index].Value;return true;}else{value = default;return false;}}#endregion#region ICollection <KeyValuePair<TKey, TValue>>public int Count{get { return list.Count; }}public bool IsReadOnly{get { return false; }}public void Add(KeyValuePair<TKey, TValue> kvp){Add(kvp.Key, kvp.Value);}public void Clear(){list.Clear();}public bool Contains(KeyValuePair<TKey, TValue> kvp){return KeyPositions.ContainsKey(kvp.Key);}public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex){var numKeys = list.Count;if (array.Length - arrayIndex < numKeys)throw new ArgumentException("arrayIndex");for (var i = 0; i < numKeys; i++, arrayIndex++){var entry = list[i];array[arrayIndex] = new KeyValuePair<TKey, TValue>(entry.Key, entry.Value);}}public bool Remove(KeyValuePair<TKey, TValue> kvp){return Remove(kvp.Key);}#endregion#region IEnumerable <KeyValuePair<TKey, TValue>>public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator(){return list.Select(ToKeyValuePair).GetEnumerator();}static KeyValuePair<TKey, TValue> ToKeyValuePair(SerializableKeyValuePair skvp){return new KeyValuePair<TKey, TValue>(skvp.Key, skvp.Value);}IEnumerator IEnumerable.GetEnumerator(){return GetEnumerator();}#endregion
}

直接将该类替换为原字典类Dictionary即可!

http://www.dtcms.com/wzjs/549922.html

相关文章:

  • 企业域名多少钱优化seo技术
  • WordPress建站收费深圳市创同盟科技有限公司
  • 辽宁网站建设推广哪家便宜邵阳多用户商城网站建设
  • 免费推广引流平台汕头网站快速优化排名
  • 网站策划内容制作网站监控推荐
  • 做外贸自己做网站么百度seo站长工具
  • 定制网站开发app费用做网站的开发语言
  • 网站栏目划分免费logo设计网站推荐
  • 永久免费网站建商城建设信用网站的目的
  • 网站开发与管理课程怎么样制作一个公众号
  • 源码搭建网站seo工作内容有哪些
  • 西安 房产网站建设网站的开发工具
  • 青岛科技网站建设网站建设有哪些主题
  • 如何查询网站关键词密度h5技术做网站
  • 南京搜必应网站优化苏州哪家保洁公司好
  • 成都锦江建设局网站做网站 智域大连
  • 宁波建站模板网站后台空间30g要多少钱
  • 用dw做网站的教程付费软件免费拿
  • 石家庄网站制作公司排名前十南阳公司网站建设
  • 网站分类 维护网络管理系统密码
  • 档案馆网站建设北京市城乡建设部网站首页
  • 龙岗地区做网站公司张家口职教中心计算机网站建设
  • 购买一个网站需要多少钱郑州专业网站建设搭建公司
  • 网站导航设计分析如何设计一个网页动态效果
  • 云南省建设工程质量协会网站手机网站建设电话
  • 企业网站建设服务内容优秀单页网站
  • 做游戏网站要多少钱做网站ps切图
  • 装饰网站建设运营青岛做网站seo
  • 网站规划与设计大作业怎么做3705房产网
  • 宁波网站建设培训班wordpress微商货源网