下载 App

个人星火ts使用教程--如何调用自己创建的自定义类

修改于2024/03/15900 浏览主题教程
2024/03/15更新声明:
  1. 修改脚本文件名称,之前命名是Main。有人开发时用main作为文件名称,导致与项目自带的main文件重名。
  2. 跟其他开发者沟通后发现新流程,链接如下:
条件:教程要求有一定的代码基础。不会的看了其实也不会
主旨:教一些会写ts代码但不熟悉星火环境的小伙伴,让他们在星火内写代码。
教学内容大纲:
  1. 游戏脚本触发流程
  2. 触发流程具象化--利用自定义脚本,在游戏开始时调用main函数
  3. 脚本的格式
  4. 常规ts脚本格式
  5. 星火脚本格式
  6. 命名空间格式
  7. 数遍交互函数格式
  8. 脚本调用
  9. 自定义脚本的互相调用
  10. 自定义脚本调用 星火自带库脚本
  11. 按自己的需求写各种类、函数、变量来实现功能
  12. 另一种简便化的调用方法:自定义脚本。
  13. 其余注意事项
  14. 查找星火自带库API的一种方法
  15. TsToLua的一些注意事项
  16. 前端代码位置
正文:
1.游戏脚本触发流程
之前用的cocos等引擎,通常是把脚本绑在场景的某个节点。然后开始之后会自动激活节点上的脚本,从而驱使游戏开始。而星火的流程则是:创建自定义脚本文件+函数,添加一个游戏开始的触发器,来触发游戏的Main函数。同时,在代码结构上也与之前遇到的有些许不同,详见下文。
TapTap
2.触发流程具象化--利用自定义脚本,在游戏开始时调用main函数
2.1.具体流程说明
  1. 创建自定义脚本。(具体操作详见下文,此处先讲整体流程+概念)
  2. 在自定义脚本下创建自定义函数。
  3. 在对应的ts脚本内实现对应内容,再写一个 export let 函数 来调用对应的方法
  4. [自定义脚本文件下的自定义函数] 与 [export let 函数] 对应。调用 [export let 函数] 时,会调用ts类中实际生效的函数,从而实现各种类里面的方法。
  5. 所以,只需要在触发器内调用[自定义函数],就可以调用到ts类中的实际函数
  6. 其中,[自定义函数]和[export let 函数]作为[触发编辑器]与[ts脚本]互相关联的接口
TapTap
调用流程图
TapTap
流程图具象化
2.2.具体操作
TapTap
点击文件夹[我的地图]右侧的+号,选中[新建自定义脚本文件]
TapTap
输入脚本名称(不能与项目原有的文件重名),比如main
TapTap
选中文件,右侧文件模式改成[ts]
TapTap
找到对应的路径,打开ts文件。(不能与项目原有的文件重名),比如main
TapTap
写具体游戏需求+export let 函数,具体格式查看下方3.2星火脚本格式
TapTap
另一个脚本功能参考,上面是具体的内容,下面是转接口
TapTap
有开发者反馈按上述步骤做了会出现如下报错。后来发现他的脚本文件名称与项目自带的main文件重名了。
3.脚本的格式
3.1.常规ts脚本格式:之前写的脚本通常以类为最小单元,每个脚本基本都是一个类。格式通常都由引用声明、类的具体内容构成
TapTap
3.2.星火脚本格式:星火的脚本需要声明在【当前项目名的同名模块】下,详见【项目根路径\script\trigger_module_main_1.ts】这个文件。
且脚本内容为【命名空间】-【常规类class+数编交互函数】。当然如果你的类只有类之间的交互,不用跟数编交互,则不用数编交互函数。
TapTap
3.2.1.命名空间的格式:module 空间名称{   }
命名空间直接复制【项目根路径\script\trigger_module_main_1.ts】这个文件的命名空间即可
TapTap
3.2.2.数编交互函数的格式:export let 函数名:函数类型 =具体函数
举例:
TapTap
上述函数的结构如下:
函数名 createrUnit   
类型    (unitName:string)=>Unit
具体函数  (unitName:string):Unit=>{ }
4.脚本间的调用
4.1.自定义脚本的互相调用:
因为所有类都在同一个module下,所以类之间的互相调用不需要import。直接输入类名互相调用即可。如果遇到同个命名空间下调用不了的情况,记得回到编辑器界面上保存。保存的时候编辑器会编译生成.lua.map文件。在拥有lua.map后才会视为在同个module下。
TapTap
4.2.自定义脚本调用 星火自带库脚本:
要调用 星火自带库 也许要在保存脚本,生成lua.map后才可以。不保存的时候,调用星火自带的类、方法等会报错。
5.上述讲了【调用的流程】【脚本的格式】【脚本间怎么互相调用】。在之后,你就可以按之前在其他引擎上一样,写代码来实现功能了。如果不知道api的话,可以查看下文【6.1-用触发编辑器写函数,查看APi】
TapTap
6.另一种简便化的调用方法:自定义脚本
使用说明:这种方式是直接在触发器内使用【动作】--【自定义脚本】。在输入框内输入想要的代码即可调用。
优点:这种方式不需要在函数下声明脚本也可以生效。
TapTap
缺点:在写一些需要参数的函数时,可能不知道参数的名称叫啥,需要到trigger_module_main_1.ts查看变量名称。而自定义函数则可以直接拖拽上面的变量来填空。
在技能、buff等数遍的时候,很难查找到对应的变量名称,因此一般我都用自定义函数,而不用自定义脚本
TapTap
TapTap
7.其他注意事项
7.1.查找星火自带库的API的一种方法。
先用触发编辑器写函数,查看APi这一步的话,主要是当你写代码找不到API的时候,可以用该方法,看一下触编用的api是哪个,然后搬用它的API。比如:我不知道怎么生成单位,就在触发器写【生成单位】的函数我不知道怎么隔时间触发动作,就在触发器写【隔时间做xx】的函数
TapTap
编辑完毕后保存,让编辑器编译。触发编辑器编译的内容会出现在   项目\script\trigger_module_main_1.ts  这个文件中。实验后,这样获取api有时候会比在库里查找要快,因为你不能确定该函数在哪个类里。
TapTap
7.2.TsToLua的一些注意事项。
由于星火编辑器的实际流程是 将ts转化为lua再运行,所以ts最好是严格模式,否则在某些情况下会出现莫名的bug。比如:泛型函数一定要补齐类型。像这个<number>一定要补上,否则在转化为lua的时候,id会被填到number的位置上,而number的位置会留空,导致报错。
TapTap
7.3.前端代码:前端与后端的结构相同。不过后端的代码放在 【项目/script/xxxxx】,前端的代码放在 【项目/ui/script/xxxxx】前后端代码的同一功能的api有时候名字是不同的。如果找不到对应的api,记得用6.1方法查找
目前总结的就这些,希望能帮到部分从其他引擎转过来的小伙伴
星火编辑器-修改官方预制自定义物品信息模板截图
星火编辑器-修改官方预制自定义物品信息模板
大家对DIY物品信息显示都很热衷,但是在具体实现上还是比较费神费力的,这次的更新将会极大程度上减少开发者的困难,而且非常好用。 首先,需要将编辑器更新到10版本,这次的更新官方重构了物品提示信息面板,并在界面编辑器中加入了7个全新的页面: 我们所要修改的页面主要是【物品信息_物品信息模板】中的【物品信息】控件: 其中【上部属性面板】就是背包效果,【下部属性面板】就是装备效果 这两个不需要管它,我们
18 赞
3 回复
星火编辑器客户端物品获取属性值的方法截图
星火编辑器客户端物品获取属性值的方法
物品添加属性分两种情况 1:设置额外属性 2:添加词缀 各有各的优缺点。 本次主要讲的是添加词缀如何在客户端获取属性值。 第一种情况:词缀buff里的属性值是设置好的固定值。 这类添加给物品后,在客户端获取就很容易。 因为添加的词缀是“装备”词缀,只需要遍历指定的装备词缀列表这条语句,获取到buff_id 再直接将buff_id通过转化成(数编表:buff),再对数编表buff里的属性修改里去获取
9 赞
35 回复
「自制卡牌游戏DIY」战斗抽卡系统(2)截图
「自制卡牌游戏DIY」战斗抽卡系统(2)
#星火编辑器 #星火编辑器入门 #星火编辑器案例 在上期内容中,我们从卡牌状态的切换打开思路,将从卡池中刷新场上卡牌逻辑用触发器一步步实现,并通过洗牌的方法确保玩家从入场卡池中刷出的卡牌具有随机性。但在此之后系统还需要将抽取的卡牌替换为新卡,并为抽到的法术卡添加法术,方可将刷出卡牌的信息完备地打包给客户端以呈现给玩家,而这正是今天要做的。话不多说,来吧。 接着上期,在对卡池中未抽取的卡牌进行
2 赞
新版的背包存档截图
新版的背包存档
舍弃老版超长代码逻辑还不好用的背包存档。想多少个格子就多少个格子不用一个格子创建一个变量,不用写一堆繁琐重复的代码。适用性更强,支持恢复到指定格子,多背包恢复 主要实现核心围绕云变量表这个类型变量来进行处理、获取用户背包栏,循环背包栏获取指定背包栏的物品存入云变量表,然后提交。 读取的话反之也是获取的云变量赋值给云变量表,循环读取背包栏并且获取格子,在将物品放入指定格子 最后附上demo地址 h
36 赞
5 回复
2025年8月8日更新日志【13版本】截图
2025年8月8日更新日志【13版本】
星火编辑器开发团队正在全力研发基于C#的、深度整合AI能力的2.0版本 与此同时,我们也会对当前的13版本保持长期的支持 本次我们对13版本进行了更新和问题修复,相关更新已同步至外网13版本和线上13版本 流式加载Prefab 在数据编辑器-地图设置-高级属性中增加了「流失加载Prefab」功能,此功能可以显著的提升场景、资源较多的游戏的加载速度。 我们选择了部分资源非常多、场景非常大的游戏进行测
官方
22 赞
8 回复
星火教程--excel导表示范截图
星火教程--excel导表示范
说明:针对 https://www.taptap.cn/moment/440830993054564607 工具的一个简单的导表范例demo demo链接: https://pan.baidu.com/s/1FZPJvxxgjIcyEsNRprJZMw?pwd=23n1 提取码: 23n1 补充说明:前端没有表格数据,需要的话,初始化完毕后,自己把表格数据传到前端。
1 赞
3 回复
无须申请,星火编辑器现已公测开放下载截图
无须申请,星火编辑器现已公测开放下载
—————————————————— 各位关注星火编辑器的小伙伴: 感谢大家一直以来对编辑器支持! 破晓已去,曙光降临! 星火编辑器现已开启公测! · 关于下载和资格申请 现已无需申请,请去下面的官方首页直接下载! 缘起测试是星火编辑器自诞生以来第一次对外测试! 从2022年八月开始到十一月,历时三个月。 缘起之后缘聚测试,历时又七个月! 缘聚之后,破晓降临,历时又十二个月! 曾经微弱的星火现已渐
官方
325 赞
375 回复
22:58
星火写轮眼-技能系列006-刀塔2-双头龙截图
星火写轮眼-技能系列006-刀塔2-双头龙
星火写轮眼-技能系列006-刀塔2-双头龙
2 赞
2 回复
02:24
2022 TapTap 游戏发布会|星火编辑器截图
2022 TapTap 游戏发布会|星火编辑器
官方
88 赞
25 回复
「自制卡牌游戏DIY」战斗抽卡系统(1)截图
「自制卡牌游戏DIY」战斗抽卡系统(1)
#星火编辑器 #星火编辑器入门 #星火编辑器案例 上一期我们完成了游戏的核心功能——战斗抽卡系统的设计,并将主要设计梗概用思维导图的形式清楚呈现。今天我们要着手开始用触发器编写逻辑,实现这个游戏核心玩法系统。本期车速较快,请站稳扶好! 首先我们先做好前置准备,确保已经有了“标准卡牌”类以及足以存储卡牌所需信息的各个成员变量(P2) 同样的,确认玩家信息类里面已经有了这三个“标准卡牌”数组
1 赞