Unity 小科普
老规矩,先介绍一下 Unity 的科普小知识:Unity是 实时3D互动内容创作和运营平台 。
- 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。
- Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
- 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
Unity 实用小技能学习
将Dictionary字典中的数据序列化 到Unity Inspector监视器面板
由于默认的Dictionary是不能被序列化到Unity的监视器面板中的,所以就需要做一些额外处理来让其显示到Inspector上以满足我们的配置。
简单实现方法主要有两种:
- 方法1.通过使用结构体+数组/列表的方式来实现。
- 方法2:使用编辑器扩展插件实现,比如Odin插件等
方法一 实现方式如下:
此时就可以在Inspector监视器面板中配置数值了,有需要的话赋值后可以把值添加到字典中,然后控制字典的增删改查就可以啦。
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class DicTest : MonoBehaviour
{
[System.Serializable]
public struct PrefabData
{
public int id;
public string name;
}
public PrefabData[] prefabDatas;
public List<PrefabData> prefabDataList = new List<PrefabData>();
public Dictionary<int, string> prefabDataDic = new Dictionary<int, string>();
private void Start()
{
// 字典内容添加
for (int i = 0; i < prefabDataList.Count; i++)
{
prefabDataDic.Add(prefabDataList[i].id, prefabDataList[i].name);
}
}
}
实现效果如下:
方法二 实现方式如下:
在Unity中导入Odin插件,然后在脚本中添加命名空间using Sirenix.OdinInspector
,将脚本类继承SerializedMonoBehaviour
。
这样我们正常定义字典结构,字典就可以正常显示在Inspector面板中啦!
using System.Collections.Generic;
using UnityEngine;
using Sirenix.OdinInspector;
public class DicTest : SerializedMonoBehaviour
{
public Dictionary<int, string> prefabDataDic = new Dictionary<int, string>();
}
实现效果如下:
Odin插件时Unity中比较常用的编辑器扩展插件,可以帮助我们在监视器面板中自定义多种显示效果,后面会专门出文章介绍此插件的使用~