用Unity同时开发【微信小游戏】【安卓】【IOS】游戏#5.5.2 组件拓展

【系列文章目录】



前言

本篇介绍在PuerTS拓展FGUI组件

【FGUI文档——PuerTS】


一、定义拓展类

【FGUI文档——PuerTS】中有对自定义拓展的描述

这里我们先完成第一步对类的拓展

根据FGUI官方给出的例子,我们可以按照这个例子拓展以下FGUI的Button来试试

export abstract class AbstractGButtonController extends FairyGUI.GButton{
    
    
	constructor() {
    
    
		super();
		this.__onConstruct = this.onConstruct.bind(this);
    }

	protected onConstruct() {
    
    
		//绑定组件
		///...
	}
}

这里不论是官方给出的例子在绑定FGUI的方法时,都将this传入了

区别是官方使用了

() => {
    
    this.onConstruct()}

而我使用的是

this.onConstruct.bind(this);

如果不这样写,直接写

this.__onConstruct = this.onConstruct.bind(this);

虽然也可以调到函数,但是FGUI调用这个方法的时候,this对象会丢失

二、注册拓展类

注册扩展类。要在创建任何对象前注册好。

所以我们需要所有FGUI创建之前,将所有的拓展类进行注册

这里我把它放在上一篇文章提到的UITable中

public static UICommonEx = [
        {
    
     url: "ui://GameMain/Btn_Enter", script: testBtn },
    ]

这样在使用FGUI创建界面之前或者游戏一开始的时候,我将这个表遍历一次

将所有的组件与自定义拓展类绑定

//注册组件拓展:
//FairyGUI.UIObjectFactory.SetPackageItemExtension("ui://包名/组件", () => { return new 拓展类();});

public RegisterUICommonEx() {
    
    
    for (let i = 0; i < UITable.UICommonEx.length; i++) {
    
    
	    FairyGUI.UIObjectFactory.SetPackageItemExtension(
	        UITable.UICommonEx[i].url,
	        () => {
    
    
	            return new UITable.UICommonEx[i].script();
	        }
	    );
    }
}

这样我们就完成了注册,任何一个被注册了拓展类的组件被创建出来时,都可以通过拓展类来访问它了


猜你喜欢

转载自blog.csdn.net/ruanlinxi1994/article/details/125440394
今日推荐