当前位置: 首页 > news >正文

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<T>{private static inst: any = null;public static Inst<T>(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<Test>{public Start(){console.log("初始化成功Test");}
}

  调用方法如下:

 Test.Inst(Test).Start();

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

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

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

http://www.lryc.cn/news/93811.html

相关文章:

  • .net 软件开发模式——三层架构
  • SpringBoot如何优雅的实现重试功能
  • 【CEEMDAN-VMD-GRU】完备集合经验模态分解-变分模态分解-门控循环单元预测研究(Python代码实现)
  • OpenText Exceed TurboX(ETX)—— 适用于 UNIX、Linux 和 Windows 的远程桌面解决方案
  • 【人工智能】— 逻辑回归分类、对数几率、决策边界、似然估计、梯度下降
  • k8s pod “cpu和内存“ 资源限制
  • datagrip 连接 phoenix
  • 黑客入侵的常法
  • VB报警管理系统设计(源代码+系统)
  • Redis入门 - Redis Stream
  • 微服务中常见问题
  • 更新删除清理购物车
  • 基于Intel NUC平台的字符设备陀螺仪GX5-25驱动程序
  • 建立小型医学数据库(总结)
  • Git学习笔记
  • vue面试题1. 请说下封装 vue 组件的过程?2. Vue组件如何进行传值的?3. Vue 组件 data 为什么必须是函数?4. 讲一下组件的命名规范
  • Docker使用记录
  • OpenCV(图像处理)-基于Python-形态学处理-开运算、闭运算、顶帽、黑帽运算
  • chatgpt赋能python:Python支持跨平台软件开发
  • 哈工大计算机网络课程网络层协议详解之:CIDR与路由聚集
  • C++ 教程(19)——日期 时间
  • React 应用 Effect Hook 函数式中操作生命周期
  • C代码程序实现扫雷游戏纯代码版本
  • ai代写---怎么在ubutnu服务器中安装mqtt
  • 【设计模式与范式:行为型】63 | 职责链模式(下):框架中常用的过滤器、拦截器是如何实现的?
  • Kendo UI for jQuery---03.组件___网格---02.开始
  • 初识Telegraf、InfluxDB和Grafana铁三角形成的监控可视化解决方案
  • 【哈佛积极心理学笔记】第20课 幸福与幽默
  • 设计模式-责任链模式
  • 不变的是需求,变化的是解决方法和工具:探讨iPaaS与ESB的差异