/// <summary>
/// 将生成好的Mono绑定组件
/// var go = Selection.activeGameObject;
/// </summary>
private static void BindUIComponent(GameObject go)
{
//拿到Mono所属的程序集
var assembly = Assembly.Load("Game");
//反射拿到里面的类
Type uiBindType = assembly.GetType($"ET.Client.{go.name}_Bind");
//添加绑定关系的组件
var uiBind = go.GetComponent(uiBindType);
if (uiBind == null)
{
uiBind = go.AddComponent(uiBindType);
}
//循环已有的字段列表绑定
for (int i = 0; i < BindDatas.Count; i++)
{
var bind = BindDatas[i];
//反射拿到类型里的组件
var field = uiBindType.GetField(bind.Rect.name);
//使用寻找好的组件获取对应的类型,Unit特殊处理
var typeStr = bind.Type;
UnityEngine.Object component;
if (typeStr == "Unit")
{
component = bind.Rect.gameObject;
}
else
{
component = bind.Rect.GetComponent(typeStr);
}
//为该组件赋值(实例对象,值)
field.SetValue(uiBind, component);
}
//保存对象
EditorUtility.SetDirty(uiBind);
}
最后修改:2024 年 06 月 11 日
© 允许规范转载