开源!! Creator3.8+ 游戏框架(涉及UI(FGUI)、实体组件、Http、行为树、四叉树、全局定时器、全局事件、资源管理、红点解决方案等内容)

屏幕


/** 屏幕宽度 */

public static ScreenWidth: number;

/** 屏幕高度 */

public static ScreenHeight: number;

/** 设计分辨率宽 */

public static DesignWidth: number;

/** 设计分辨率高 */

public static DesignHeight: number;

/** 安全区外一侧的高度 或 宽度 */

public static SafeAreaHeight: number;

/** 安全区的宽度 */

public static SafeWidth: number;

/** 安全区的高度 */

public static SafeHeight: number;

工具

一、数学工具 (MathTool)

import { MathTool } from 'kunpocc';

// 1. 数值限制
// 将数值限制在指定范围内
const value = MathTool.clampf(75, 0, 100);  // 返回75,因为在0-100范围内
const value2 = MathTool.clampf(150, 0, 100); // 返回100,因为超出上限
const value3 = MathTool.clampf(-50, 0, 100); // 返回0,因为低于下限

// 2. 随机数生成
// 生成指定范围内的整数(包含边界值)
const randomInt = MathTool.rand(1, 10);      // 返回1到10之间的整数

// 生成指定范围内的浮点数(包含最小值,不包含最大值)
const randomFloat = MathTool.randRange(0, 1); // 返回0到1之间的浮点数

// 3. 角度与弧度转换
// 角度转弧度
const radian = MathTool.rad(90);  // 90度转换为弧度:约1.57

// 弧度转角度
const degree = MathTool.deg(Math.PI); // π弧度转换为角度:180

// 4. 平滑过渡
// 用于实现数值的平滑变化,常用于相机跟随、UI动画等
const smoothValue = MathTool.smooth(
    0,    // 起始值
    100,  // 目标值
    0.16, // 已经过时间(秒)
    0.3   // 响应时间(秒)
);  // 返回一个平滑过渡的中间值

使用说明:

  1. clampf(value: number, min: number, max: number): number

    • 将数值限制在指定范围内
    • 如果小于最小值,返回最小值
    • 如果大于最大值,返回最大值
    • 否则返回原值
  2. rand(min: number, max: number): number

    • 生成指定范围内的随机整数
    • 包含最小值和最大值
    • 常用于随机选择、随机掉落等场景
  3. randRange(min: number, max: number): number

    • 生成指定范围内的随机浮点数
    • 包含最小值,不包含最大值
    • 常用于需要精确浮点随机数的场景
  4. rad(angle: number): number

    • 将角度转换为弧度
    • 计算公式:angle * Math.PI / 180
  5. deg(radian: number): number

    • 将弧度转换为角度
    • 计算公式:radian * 180 / Math.PI
  6. smooth(current: number, target: number, elapsedTime: number, responseTime: number): number

    • 计算平滑过渡的值
    • current: 当前值
    • target: 目标值
    • elapsedTime: 已经过时间(秒)
    • responseTime: 响应时间(秒)
    • 常用于实现平滑的相机移动、UI动画等

二、MD5

import { md5 } from 'kunpocc';

// 字符串 MD5 加密
const hash = md5('Hello, World!');
console.log(hash); // 输出32位MD5哈希值

// 注意:
// 1. 输入必须是字符串类型
// 2. 不能传入 undefined 或 null
try {
    md5(null);
} catch (error) {
    console.error('MD5输入不能为null或undefined');
}

三、数据结构

  • 二叉堆(BinaryHeap 最大、最小堆)
  • 单向(LinkedList)、双向链表 (DoublyLinkedList
  • 栈(Stack

四、适配相关 Adapter (不需要关心)

马住马住马住马住

:+1::+1::+1:

大喊666!

git给个星吧,感谢~

star了

爱你哟 :+1:

马克波罗!

mark,老哥2.4.x的版本的分支有么 :smiley:

2.4的没有

2.4是插件的形式用的 跟这个不一样

适合新人学习吗

适合的,逻辑倒是不复杂

赞!感谢分享。
看起来是很不错的框架,要是有配套的深度案例项目就更好了,demo体现不出来。

主要是没有太多时间完善demo,后续我会尽量抽时间把demo做的完善一些
功能的话在线上项目宫爆:老奶奶家族篇中已经验证过了,是可以放心用的

1赞

大部分开发者对于开源框架第一感觉不是怀疑这个框架好不好用、能不能用,而是不知道怎么用。至少我是这样的:joy:

框架是好框架,要是能有文档说明常规项目下使用这个框架的工作流是什么样子的就更好了。例如这个框架下代码结构是怎么组织的,有些什么规范。这些偏实际使用的东西就更好了。期待后续demo更新,加油 :muscle:

另外有框架群吗?

感谢提供的建议,常规使用的文档后续我补充一下,尽量全面一些
没有群,个人没有精力维护

mark!mark!感谢作者!

贴主用你这个框架是否必须使用商城里面那两个插件呢?我看插件是收费的。研究了一下发现点击事件的绑定需要通过你那个插件来进行uiconfig文件的修改。