IExposedPropertyTable与ExposedReference的使用
近期回顾Dead of the Book demo时,看见了它们的运用。感觉主要是用于ScriptableObject资源和Scene资源解耦;
并将这类做法规范化。
做一个小测试,IExposedPropertyTable做容器,存放具体目标对象:
public class ExposeTableObj : MonoBehaviour, IExposedPropertyTable
{
[System.Serializable]
public struct Info
{
public PropertyName id;
public Object value;
} [SerializeField] private Info[] infos; public void ClearReferenceValue(PropertyName id)
{
infos = System.Array.Empty<Info>();
} public Object GetReferenceValue(PropertyName id, out bool idValid)
{
idValid = false; for (int i = 0; i < infos.Length; i++)
{
var info = infos[i];
if (info.id == id)
{
idValid = true;
return info.value;
}
} return null;
} public void SetReferenceValue(PropertyName id, Object value)
{
}
}
使用者:
public class ExposeTableUser : MonoBehaviour
{public ExposeTableObj exposeTable; private void Start()
{
ExposedReference<GameObject> myReference = new ExposedReference<GameObject>();
myReference.exposedName = "myGoObj";
GameObject go = myReference.Resolve(exposeTable);
Debug.Log(go);
}
}
这里直接动态创建了myReference,如果作为成员字段也可以被序列化,但是unity不会初始化匹配的exposedName。
然后在Start里,通过exposedName匹配了对应的对象。Unity用Guid作为exposedName,当然这个测试用了常规字符串也没问题。
面板配置:
IExposedPropertyTable与ExposedReference的使用的更多相关文章
- Book of the Dead 死者之书Demo工程回顾与学习
1.前言 一转眼离Book of the Dead Environment Demo开放下载已过去多年,当时因为技术力有限,以及对HDRP理解尚浅, 所以这篇文章一直搁浅到了现在.如今工作重心已转向U ...
- Timeline扩展功能实践指南
转载于http://forum.china.unity3d.com/forum.php?mod=viewthread&tid=32842,介绍了timeline的轨道扩展 Timeline功能 ...
随机推荐
- CF166A Rank List 题解
Content 有 \(n\) 个元素,第 \(i\) 个元素包含两个值 \(a_i,b_i\),按照以下规则排序: 如果对于 \(i\neq j\) 有 \(a_i\neq a_j\),则按照 \( ...
- AT2202 硬度フェスティバル / Kode Festival 题解
Content 有 \(2^n\) 块石头,第 \(i\) 块石头硬度为 \(a_i\).重复执行以下操作直到只剩下一块石头为止: 让当前编号为 \((1,2)\).\((3,4)\).-- 的石头互 ...
- MAMP的使用
MAMP下载并安装 下载地址:https://pan.baidu.com/s/1TgoKBG3F59NGO8lEj9mf4Q 密码:2m3d 安装:按照提示,一直下一步直到完成 MAMP操作
- 使用.NET 6开发TodoList应用文章索引
系列导航 使用.NET 6开发TodoList应用(1)--系列背景 使用.NET 6开发TodoList应用(2)--项目结构搭建 使用.NET 6开发TodoList应用(3)--引入第三方日志 ...
- Spring学习(二)三种方式的依赖注入
1.前言 上一篇讲到第一个Spring项目的创建.以及bean的注入.当然.注入的方式一共有三种.本文将展开细说. 1.set注入:本质是通过set方法赋值 1.创建老师类和课程类 1.Course ...
- 1048 - Conquering Keokradong
1048 - Conquering Keokradong PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: ...
- Pikachu漏洞练习-SQL-inject(四)
- POJ 3278:The merchant(LCA&DP)
The merchant Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 6864 Accepted: 2375 Desc ...
- 第七个知识点:随机性如何辅助计算和什么是BPP类问题
第七个知识点:随机性如何辅助计算和什么是BPP类问题 原文地址:http://bristolcrypto.blogspot.com/2014/11/52-things-number-7-how-doe ...
- HITCON 2019 Lost Modular again writeup
HITCON 2019 Lost Modular again writeup 算是基础题,有很多之前题的影子,做不出来纯属菜. 题目 加密脚本 from Crypto.Util.number impo ...