哇这简直是个革命性的功能!先感谢一下某位不愿意透露姓名的贝贝大佬提供的想法和技术支持!
先简述一下这是个啥功能,就是我们项目之前在lua里获取UI组件都是通过路径来获取,
类似这种,定义的时候需要每个组件都复制路径不方便而且容易出错就不说了,这几天美术在重新设计原有的一些UI界面,各种调整物体父节点或者更换预制体,每次美术那边动一次都需要程序这边更改路径名字,真的挺烦,于是在大佬提示下,我这边就实现了一个可以读取lua里定义的组件,然后像C#一样直接把组件拖拽进框框里就可以了的脚本,像这样:
(这是lua里定义的组件)
这是在脚本里解析之后,就可以直接把目标组件拖拽进来,更改路径啥的再也不用动代码了!鼓掌!撒花!
接下来说说具体实现过程。
大佬教的,做一个大功能需要拆分成一个个的小需求。上面这些拆成小需求就是 首先读目标lua文件的路径,然后解析定义好的字符串,把字符串转换成对应的组件类型,然后再在编辑器面板里显示出来就可以啦。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Text.RegularExpressions;
using System;
using UnityEngine.UI;
using SLG.UI;
using TMPro;
namespace Game.UI
{
[System.Serializable]
public class LuaUIComponentParams
{
public string key;
public string componentType;
public string node;
public UnityEngine.Object obj;
//public GameObject gameObject;
}
public class LuaUIComponent : MonoBehaviour
{
public string luaPath = "";
public string paramsName = "ComponentParams";
[HideInInspector]
public List<LuaUIComponentParams> paramsList;
public void ReadLuaUIComponentParams(string path)
{
Debug.Log(path);
string text = File.ReadAl