Skip to content

About

FGUI生成C#代码,跨包保留原有类型

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

FGUI C# 代码生成插件

一个用于 FairyGUI 编辑器的 TypeScript 插件,支持生成 C#代码并处理跨包组件引用。

功能特性

  • ✅ C# 代码自动生成:为 FairyGUI 组件自动生成 C#类代码
  • ✅ 跨包组件支持:智能处理跨包组件的命名空间引用
  • ✅ 自定义组件识别:准确识别自定义组件类型并生成相应代码
  • ✅ Binder 类生成:自动生成 UIPackage 绑定代码
  • ✅ MonoGame 兼容:支持 MonoGame 和 Unity 两种项目类型

安装配置

  1. 将插件文件夹复制到 FairyGUI 编辑器的插件目录
  2. 在 FairyGUI 编辑器中启用插件
  3. 配置发布设置中的代码生成选项

核心文件说明

< /dev/null 文件名 功能描述
main.ts 插件入口点,处理发布事件
GenCode_CSharp.ts C# 代码生成核心逻辑
CodeWriter.ts 代码写入工具类
package.json 插件配置和依赖信息

主要功能

跨包组件处理

插件能智能识别跨包引用的组件,并:

  • 自动生成正确的命名空间引用
  • 添加必要的 using 语句
  • 处理自定义组件类型映射

代码生成特性

  • 组件字段生成:为 UI 组件生成对应的 C#字段
  • 构造函数生成:生成组件初始化代码
  • URL 常量生成:生成组件资源 URL 常量
  • 工厂方法生成:生成 CreateInstance 静态方法

支持的组件类型

  • 基础 UI 组件(GButton、GLabel、GTextField 等)
  • 自定义组件
  • 控制器组件
  • 动画组件

使用示例

生成的 C#代码结构

using FairyGUI;
using FairyGUI.Utils;
using Package1;  // 跨包引用

namespace MyPackage
{
    public partial class MyComponent : GComponent
    {
        public GButton btnSubmit;
        public Package1.CustomComponent customComp;
        public const string URL = "ui://package_id/component_id";

        public static MyComponent CreateInstance()
        {
            return (MyComponent)UIPackage.CreateObject("PackageName", "ComponentName");
        }

        public override void ConstructFromXML(XML xml)
        {
            base.ConstructFromXML(xml);

            btnSubmit = (GButton)GetChild("btnSubmit");
            customComp = (Package1.CustomComponent)GetChild("customComp");
        }
    }
}

Binder 类示例

public class MyPackageBinder
{
    public static void BindAll()
    {
        UIObjectFactory.SetPackageItemExtension(MyComponent.URL, typeof(MyComponent));
        // ... 其他组件绑定
    }
}

配置选项

插件支持以下配置选项(通过 FairyGUI 发布设置):

  • packageName: 根命名空间名称
  • classNamePrefix: 类名前缀
  • ignoreNoname: 是否忽略未命名组件
  • getMemberByName: 是否通过名称获取成员

使用说明

git clone 本项目后,将插件文件夹复制到 FairyGUI 编辑器的插件目录中。

开发环境

  • Node.js: 建议使用最新 LTS 版本
  • TypeScript: ^5.8.3
  • FairyGUI 编辑器: 支持 Puerts 运行时

构建说明

  1. 安装依赖:
npm install
  1. 编译 TypeScript:
npx tsc
  1. 生成的 JavaScript 文件将用于 FairyGUI 编辑器运行

注意事项

  • 插件基于 Puerts 运行时,需要 FairyGUI 编辑器支持
  • 跨包组件必须正确配置包依赖关系
  • 自定义组件类型识别基于资源类型和命名规则
  • 生成的代码支持 Unity 和 MonoGame 两种框架

许可证

本项目仅供学习和开发使用。

技术支持

如有问题或建议,请通过以下方式联系:

  • 创建 Issue 反馈问题
  • 提交 Pull Request 贡献代码

该插件旨在提高 FairyGUI 项目的开发效率,通过自动化代码生成减少手工编写重复代码的工作量。

About

FGUI生成C#代码,跨包保留原有类型

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages