Laya3.0游戏框架搭建流程(随时更新)

  近两年AI绘图技术有了长足发展,准备把以前玩过的游戏类型重制下,也算是圆了一个情怀梦。

  鉴于unity商用水印和启动时间的原因,我决定使用Laya来开发。目前laya已经更新到了3.0以上版本,就用目前比较新的版本。

  之后关于开发中遇到的一些小问题,我都会记录到这篇博客中。毕竟只是个人项目,所以按照帖子的方式更新。

1,Laya的生命周期

  这个没什么说的,了解unity的生命周期后,这快设计的差不多,实例化一个继承Laya的类的时候,也可以看到相关的函数:

/**
     * 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
     */
    //onAwake(): void {}

    /**
     * 组件被启用后执行,例如节点被添加到舞台后
     */
    //onEnable(): void {}

    /**
     * 组件被禁用时执行,例如从节点从舞台移除后
     */
    //onDisable(): void {}

    /**
     * 第一次执行update之前执行,只会执行一次
     */
    //onStart(): void {}

    /**
     * 手动调用节点销毁时执行
     */
    //onDestroy(): void {

    /**
     * 每帧更新时执行,尽量不要在这里写大循环逻辑或者使用getComponent方法
     */
    //onUpdate(): void {}

    /**
     * 每帧更新时执行,在update之后执行,尽量不要在这里写大循环逻辑或者使用getComponent方法
     */
    //onLateUpdate(): void {}

    /**
     * 鼠标点击后执行。与交互相关的还有onMouseDown等十多个函数,具体请参阅文档。
     */
    //onMouseClick(): void {}

2,TS的单例化

  单例化是常见的设计模式,ts的单例化用传统写法是这样:

export  class UIProp {
    private static instance: UIProp = null;
    static getInstance() {
      if (!UIProp.instance) {
        UIProp.instance = new UIProp();
      }
      return UIProp.instance;
    }
    /* 
      单例模式,仅允许通过 UIProp.getInstance 获取全局唯一实例
    */
    private constructor() {
      console.log("创建函数");
    }
    

    public Start()
    {
        console.log("UI数据初始化");   
             
    }    

    public Update()
    {

    
    }

  }

调用方法如下:

 UIProp.getInstance().Update();

  但明显这样写很麻烦,尤其在单例化很多的情况下。而我想到,在C#可以用静态+泛型的方法解决。ts既然语法特性和C#很像,没道理不能简化,如是我又找到了如下写法:

//实例化脚本:基类
export class Singleton{
    private static inst: any = null;
    public static Inst(s: { new(): T }): T
    {
        if (this.inst == null)
        {
            this.inst = new s();
        }
        return this.inst;
    }

}

  之后再想创建单例化类的时候,只需要这样写就行。

import { Singleton } from "./Singleton";

/**
 * name
 */
export class Test extends Singleton{

    public Start()
    {
        console.log("初始化成功Test");
    }
}


  调用方法如下:

 Test.Inst(Test).Start();

  我们简单测试下,结果如下:

Laya3.0游戏框架搭建流程(随时更新)_第1张图片

   暂时就先更新这么多,数据存储和读表放到端午节再更。

~~~~~~~2023/6/18~~~~~~~~

你可能感兴趣的:(Laya3.0,TypeScript,游戏)