- 导读
- 编辑器使用基础
- 项目设置
- 包
- 分支
- 发布
- 元件
- 图片
- 动画
- 骨骼动画
- 图形
- 装载器
- 3D内容装载器
- 文本
- 富文本
- 输入文本
- 字体
- 组
- 组件
- 滚动容器
- 控制器
- 关联系统
- 标签
- 按钮
- 下拉框
- 进度条
- 滑动条
- 滚动条
- 列表
- 树
- Popup
- Drag&Drop
- 窗口系统
- 动效
- 适配
- 多国语言
- 导入和导出
- 偏好设置
- 颜色空间
- 插件
- 辅助工具
SDK
- LayaAir
- Egret
- Cocos2dx
- Cocos Creator
- Cry Engine
- ThreeJS
SDK - Unity
- 显示UI面板
- 坐标系统
- 纹理集的处理
- 字体的处理
- 输入处理
- 事件机制
- 插入模型/粒子/Spine/Canvas
- 曲面UI
- DrawCall优化
- 在Lua中使用
- 在Puerts中使用
- 特色功能
- 常见问题
在Puerts中使用
准备工作
- 在Unity编辑器的Scripting Define Symbols里增加
FAIRYGUI_PUERTS
。 可以参考以下代码生成FairyGUI的声明文件和胶水代码文件(仅供参考,可以自行根据Puerts要求实现)。
[Binding]
static IEnumerable<Type> Bindings
{
get
{
List<Type> result = new List<Type> {
List<string> namespaces = new List<string>()
{
"FairyGUI",
"FairyGUI.Utils",
};
Assembly[] ass = AppDomain.CurrentDomain.GetAssemblies();
result.AddRange((from assembly in ass
where !(assembly.ManifestModule is System.Reflection.Emit.ModuleBuilder)
from type in assembly.GetExportedTypes()
where type.Namespace != null && namespaces.Contains(type.Namespace) && !isExcluded(type)
&& type.BaseType != typeof(MulticastDelegate) && !type.IsEnum
select type));
return result;
}
}
监听事件
|
使用Window类
FairyGUI提供的Window类,一般需要开发者自己扩展,例如覆盖OnShown,OnHide等。在Puerts里,编写Window扩展的方法是:
class DemoWindow extends FairyGUI.Window { |
自定义扩展
FairyGUI在C#里可以使用UIObjectFactory.SetPackageItemExtension
进行自定义扩展。在Puerts里,同样可以这样做。方法如下:
定义扩展类。注意基础类型,不要搞错。例如按钮是GButton,一般的组件则是GComponent。
class MyButton extends FairyGUI.GButton {
public myProp:string;
public constructor() {
super();
this.__onConstruct = () => { this.onConstruct(); };
}
public onConstruct(): void {
}
public test() {
}
}注册扩展类。要在创建任何对象前注册好。
FairyGUI.UIObjectFactory.SetPackageItemExtension("ui://包名/我的按钮", () => { return new MyButton();});
完成以上两步后,任何“我的按钮”这个资源创建出来的对象都可以使用MyButton访问了。例如:
let myButton = <MyButton>someComponent.GetChild("myButton"); //这个myButton的资源是“我的按钮”
myButton.test();
myButton.myProp = 'hello';
发现错误或想贡献文档?
在 Github 上编辑此文档!