0%

ET-FairyGUI 导入 Unity

  • FairyGUI 导入 Unity 进行交互

    • ⭐️Transition中添加标签以及在unity中实现回调(Animation中的Event)

    • ListView 的实现

      • 列表属性的条目资源关联,不设置会导致无法加载

      • FairyGUI 编辑器中可以设置预览,但切记勾选发布时取消,否则运行时也会被渲染

      • SetVirtual 和 SetVirtualAndLoop 的区别

      • 核心设置代码

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        void Start()
        {
        mainUI = this.GetComponent<UIPanel>().ui;
        list = this.mainUI.GetChild("listView").asList;
        this.list.SetVirtual(); //设置虚拟列表,以实现动态滑动
        this.list.itemRenderer = RenderListItem;
        this.list.numItems = 5;
        }

        private void RenderListItem(int index, GObject obj)
        {
        GButton button = obj.asButton;
        button.title = index.ToString();
        }
    • Loader 加载器实现动态加载包资源

      • 确保加载的图片资源在 FairyGUI 中设置为“导出”

      • 核心代码

        1
        2
        3
        4
        GLoader loaderImg = this.mainUI.GetChild("loader").asLoader;
        // "ui://pkg_demo/res/img_headicon.png" 此处资源绝对路径如左所标志
        // 可知 GetItemURL 接口中的参数,resName 不需要考虑相对路径关系
        loaderImg.url = UIPackage.GetItemURL("pkg_demo", "img_headicon");
    • ProgressBar 自动导出后的异常处理

      生成的 CS 脚本中 title = (GTextField)GetChildAt(1); 代码段其实是一场的,根据 index 获取的其实是 image 对象,导致强转失败。
      考虑到不处理 Plugin 下 Component.GatherVariable 方法,将 ProgressBar 组件下的两张 Image 重命名为 bg 和 fg 解决 child 索引错误问题。

  • QA

    • FairyGUI 导出后,Unity 是从哪边触发脚本 AutoGen 的?

    • 同一个pkg下,如果有多个Panel,PanelId自动生成的枚举只能生成一个?

    • FairyGUI 编辑器中,只发布自己当前编辑点 pkg,如果点击发布全部,会导致工程中触发的FUIAutoGen把所有FUI相关的文件都进行修改

    • FairyGUI编辑器中发布完后,Unity触发脚本FUICodeSpawner.FUICodeSpawn()