unity学习笔记之不通过路径通过拖拽获取lua脚本里定义的UI组件

这篇博客介绍了如何在Unity中实现通过Lua脚本管理UI组件,并通过编辑器扩展实现拖拽式配置,避免手动修改路径导致的错误。作者详细阐述了从读取lua文件、解析组件定义到在编辑器中展示和编辑组件的整个过程,包括关键代码的实现。此功能提高了开发效率,减少了美术与程序之间的沟通成本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哇这简直是个革命性的功能!先感谢一下某位不愿意透露姓名的贝贝大佬提供的想法和技术支持!

先简述一下这是个啥功能,就是我们项目之前在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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值