Lua支持
====
## 准备工作
1. **如果你使用的是ToLua,在Scripting Define Symbols里加上** `FAIRYGUI_TOLUA`。XLUA则不需要。
2. 如果是ToLua,将以下语句添加到CustomSettings.cs适当的位置,然后重新生成绑定文件。
```csharp
_GT(typeof(EventContext)),
_GT(typeof(EventDispatcher)),
_GT(typeof(EventListener)),
_GT(typeof(InputEvent)),
_GT(typeof(DisplayObject)),
_GT(typeof(Container)),
_GT(typeof(Stage)),
_GT(typeof(FairyGUI.Controller)),
_GT(typeof(GObject)),
_GT(typeof(GGraph)),
_GT(typeof(GGroup)),
_GT(typeof(GImage)),
_GT(typeof(GLoader)),
_GT(typeof(GMovieClip)),
_GT(typeof(TextFormat)),
_GT(typeof(GTextField)),
_GT(typeof(GRichTextField)),
_GT(typeof(GTextInput)),
_GT(typeof(GComponent)),
_GT(typeof(GList)),
_GT(typeof(GRoot)),
_GT(typeof(GLabel)),
_GT(typeof(GButton)),
_GT(typeof(GComboBox)),
_GT(typeof(GProgressBar)),
_GT(typeof(GSlider)),
_GT(typeof(PopupMenu)),
_GT(typeof(ScrollPane)),
_GT(typeof(Transition)),
_GT(typeof(UIPackage)),
_GT(typeof(Window)),
_GT(typeof(GObjectPool)),
_GT(typeof(Relations)),
_GT(typeof(RelationType)),
_GT(typeof(Timers)),
_GT(typeof(GTween)),
_GT(typeof(GTweener)),
_GT(typeof(EaseType)),
_GT(typeof(TweenValue)),
_GT(typeof(UIObjectFactory)),
```
3. 将FairyGUI.lua放入你的lua文件存放目录。
## 监听事件
1. 普通方法的侦听和删除侦听
```csharp
require 'FairyGUI'
function OnClick()
print('you click')
end
--也可以带上事件参数
function OnClick(context)
print('you click'..context.sender)
end
UIPackage.AddPackage('Demo')
local view = UIPackage.CreateObject('Demo', 'DemoMain')
GRoot.inst:AddChild(view)
view.onClick:Add(OnClick)
--view.onClick:Remove(OnClick)
--view.onClick:Set(OnClick)
```
2. **ToLua支持带self的回调**
```csharp
function TestClass:OnClick()
print('you click')
end
function TestClass:OnClick(context)
print('you click'..context.sender)
end
self.view.onClick:Add(TestClass.OnClick, self)
self.view.onClick:Remove(TestClass.OnClick, self)
```
## 使用Window类
FairyGUI提供的Window类,一般需要开发者自己扩展,例如覆盖OnShown,OnHide等。在Lua里,编写Window扩展的方法是:
```csharp
WindowBase = fgui.window_class()
--构建函数
function WindowBase:ctor()
end
--可覆盖的函数(可选,不是说必须)
function WindowBase:OnInit()
self.contentPane = UIPackage.CreateObject("Basics", "WindowA");
end
function WindowBase:OnShown()
end
function WindowBase:OnHide()
end
function WindowBase:DoShowAnimation()
self:OnShown();
end
function WindowBase:DoHideAnimation()
self:HideImmediately();
end
--创建并显示窗口
local win = WindowBase.New();
win:Show();
也可以继续继承以上得到的Window类,例如:
MyWindow = fgui.window_class(WindowBase)
在继承类里调用父类方法的:
function MyWindow:OnInit()
WindowBase.OnInit(self)
end
```
## 自定义扩展
FairyGUI在C#里可以使用`UIObjectFactory.SetPackageItemExtension`进行自定义扩展。在Lua里,同样可以这样做。方法如下:
1. 定义扩展类。注意基础类型,不要搞错。例如按钮是GButton,一般的组件则是GComponent。
```csharp
MyButton = fgui.extension_class(GButton)
--注意这里不是构造函数,是当组件已经构建完毕后调用的
function MyButton:ctor()
print(self:GetChild('n1'))
end
--添加自定义的方法和字段
function MyButton:Test()
print('test')
end
local get = tolua.initget(MyButton)
local set = tolua.initset(MyButton)
get.myProp = function(self)
return self._myProp
end
set.myProp = function(self, value)
self._myProp = value
self:GetChild('n1').text = value
end
```
2. 注册扩展类。要在创建任何对象前注册好。
```csharp
fgui.register_extension("ui://包名/我的按钮", MyButton)
```
3. 完成以上两步后,任何“我的按钮”这个资源创建出来的对象都可以使用MyButton访问了。例如:
```csharp
local myButton = someComponent:GetChild("myButton") --这个myButton的资源是“我的按钮”
myButton:Test()
myButton.myProp = 'hello'
local myButton2 = UIPackage.CreateObject("包名","我的按钮")
myButton2:Test()
myButton2.myProp = 'world'
```
没有合适的资源?快使用搜索试试~ 我知道了~
FairyGUI-unity:Unity的灵活UI框架
共1524个文件
meta:457个
png:388个
xml:233个
需积分: 48 28 下载量 87 浏览量
2021-02-28
01:07:32
上传
评论 1
收藏 33.85MB ZIP 举报
温馨提示
FairyGUI for Unity FairyGUI是一个跨平台的UI编辑器和UI框架。 与传统的Unity UI引擎(例如NGUI和UGUI)相比,FairyGUI使用一种更贴近设计人员的思维方式来重新定义UI的生产过程,从而大大减少了程序员需要花费的时间来制作UI。 在运行效率方面,FairyGUI使用独特的FairyBatching技术进行DrawCall优化,它比NGUI和UGUI的传统优化技术更高效,更易于控制。 在功能方面,FairyGUI具有对传统UI生产痛点的良好内置支持,例如rich text (包括图像和动画), emoji input (直接支持键盘), virtual list , loop list , pixel-level hit test , curved UI , gesture , particles and model intersperse
资源详情
资源评论
资源推荐
收起资源包目录
FairyGUI-unity:Unity的灵活UI框架 (1524个子文件)
bundleusage.ab 42KB
i3.ab 22KB
i2.ab 21KB
i8.ab 20KB
i7.ab 20KB
i0.ab 18KB
i1.ab 18KB
i6.ab 16KB
i9.ab 15KB
i4.ab 15KB
i5.ab 8KB
New Terrain 2.asset 2.36MB
New Terrain 4.asset 2.36MB
New Terrain 5.asset 2.36MB
New Terrain 3.asset 2.36MB
New Terrain.asset 2.36MB
New Terrain 1.asset 2.36MB
ProjectSettings.asset 17KB
InputManager.asset 6KB
QualitySettings.asset 5KB
VFXManager.asset 4KB
UPRSettings.asset 4KB
PresetManager.asset 4KB
GraphicsSettings.asset 2KB
Physics2DSettings.asset 1KB
NavMeshAreas.asset 1KB
UnityConnectSettings.asset 812B
DynamicsManager.asset 763B
EditorSettings.asset 589B
TagManager.asset 391B
AudioManager.asset 357B
EditorBuildSettings.asset 343B
TimeManager.asset 202B
NetworkManager.asset 151B
ClusterInputManager.asset 114B
Basics_fui.bytes 73KB
Emoji_fui.bytes 16KB
Transition_fui.bytes 11KB
TurnPage_fui.bytes 6KB
Bag_fui.bytes 6KB
HitTest_fui.bytes 5KB
RenderTexture_fui.bytes 4KB
Filter_fui.bytes 4KB
Perspective_fui.bytes 4KB
ModalWaiting_fui.bytes 4KB
PullToRefresh_fui.bytes 4KB
Guide_fui.bytes 3KB
VirtualList_fui.bytes 3KB
Cooldown_fui.bytes 3KB
TreeView_fui.bytes 3KB
EmitNumbers_fui.bytes 3KB
CutScene_fui.bytes 3KB
ScrollPane_fui.bytes 3KB
TypingEffect_fui.bytes 3KB
Extension_fui.bytes 2KB
HeadBar_fui.bytes 2KB
Particles_fui.bytes 2KB
Curve_fui.bytes 2KB
LoopList_fui.bytes 1KB
TurnCard_fui.bytes 1KB
Joystick_fui.bytes 1KB
Model_fui.bytes 1KB
BundleUsage_fui.bytes 680B
Gesture_fui.bytes 503B
GList.cs 108KB
ScrollPane.cs 78KB
GObject.cs 62KB
Transition.cs 61KB
DisplayObject.cs 60KB
TextField.cs 59KB
UIPackage.cs 58KB
GComponent.cs 54KB
Stage.cs 53KB
InputTextField.cs 49KB
FairyBook.cs 38KB
Container.cs 35KB
RTLSupport.cs 29KB
GRoot.cs 27KB
NGraphics.cs 25KB
RelationItem.cs 25KB
GTweener.cs 23KB
TMPFont.cs 21KB
UIPanel.cs 20KB
GButton.cs 20KB
GLoader.cs 19KB
GComboBox.cs 18KB
EventDispatcher.cs 17KB
PopupMenu.cs 16KB
Window.cs 16KB
GGroup.cs 16KB
GTree.cs 16KB
HtmlParser.cs 15KB
XMLIterator.cs 15KB
GPath.cs 15KB
UIConfig.cs 15KB
FillMesh.cs 15KB
NTexture.cs 15KB
TreeView.cs 15KB
BasicsMain.cs 14KB
GLoader3D.cs 14KB
共 1524 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16
单身的小孩
- 粉丝: 20
- 资源: 4622
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0