一、前言
今天主要学习太阳编辑器TS框架架构。
- solar //太阳TS框架 都包括在此目录下
- atrribute //属性系统(阅读优先级5)
- common //游戏基础 ,如:全局变量、玩家基础属性、多面板、胜利失败等(阅读优先级2,重点DataBase.ts)
- constant //常量(阅读优先级1,重点)
- lib //第三方库
- tool //类对象型 工具(阅读优先级3,重点)
- types //类型声明
- util //类静态方法型 工具(阅读优先级4,重点)
- w3ts //基础框架 里面封装了各个handle类型的对象形式(阅读优先级6)
二、太阳自定义值
YDWE的逆天自定义值,让我们能以一种简单直观的方式给单位、物品等任何类型的物体数据设置自定义值,自定义值可以理解为给它贴上了某种类型的标签。
我们都知道逆天局部变量只在当前触发生效,且不用销毁,那么逆天自定义值就是方便我们在其他触发器中调用。
实例1:初始化时设置太阳自定义值,然后在其他触发里打印它。
1、在太阳编辑器的入口文件App.ts的constructor里写上一段太阳自定义值
DataBase.getUnitTypeSolarData('Hamg').名字 = '狗蛋';db.getItemTypeSolarData('rat3 ').攻击力 = 10000;
2、新建Zi_Dy.ts文件,写上:
import DataBase from "solar/common/DataBase";import PlayerUtil from "solar/util/game/PlayerUtil";import {Trigger} from "solar/w3ts/handles/trigger";export default class Zi_Dy {constructor() {let trigger = new Trigger()trigger.registerTimerEvent(1, false)trigger.addAction(this.action)}action(this: void) {PlayerUtil.text(Player(0),DataBase.getUnitTypeSolarData('Hamg').名字,5,0,0)PlayerUtil.text(Player(0),db.getItemTypeSolarData('rat3 ').攻击力,20,0,0)}}
3、运行效果:
[success]
知识点:
1、getUnitTypeSolarData是设置单位类型的自定义值,getItemTypeSolarData是设置物品类型的自定义值,其他类型的可以访问太阳编辑器框架"solar/common/DataBase"查看。
2、db是DataBase的缩写。
3、PlayerUtil.text = DisplayTextToPlayer,它是来自太阳编辑器框架的玩家工具,路径:"solar/util/game/PlayerUtil"。
[/success]
三、太阳中心事件
逆天触发器可以在同一个触发的触发动作中新建逆天触发器,逆天触发器可以设置参数,参数属于局部变量,可以避免变量冲突。有人形象的说:逆天触发器,其实就是让不会JASS的T使用者用T来写JASS。
实例:Zi_Dy.ts文件的触发动作里用太阳中心事件,实现单位死亡事件——山丘Kill大法师,提示死亡单位名字。
SetHeroStr(gg_unit_Hmkg_0000,1000,true)se.unitDeath((du,ku) =>{if(du == gg_unit_Hamg_0004 && ku == gg_unit_Hmkg_0000){PlayerUtil.text(Player(0),'死亡单位:'+GetUnitName(du),20,0,0)return true;}return false;})
[success]
知识点:
1、SetHeroStr是设置英雄的力量属性。了解更多可以访问太阳编辑器框架:“\solar\atrribute\BigAttributeCompatibleState.ts”
2、se是指太阳中心事件,了解更多可以访问太阳编辑器框架:“solar\common\SolarEvent.ts”[/success]
太阳中心事件 | 关键词 |
玩家输入聊天信息 | playerChat |
任意单位伤害事件 | unitDamaged |
单位进入区域 | enterRect |
任意单位事件 - 获得物品 | unitPickupItem |
任意单位事件 - 获得物品 | onUnitPickupItem |
任意单位事件 - 丢弃物品 | unitDropItem |
任意单位事件 - 丢弃物品 | onUnitDropItem |
任意单位事件 - 使用物品 | unitUseItem |
任意单位事件 - 使用物品 | onUnitUseItem |
玩家单位事件 - 完成建造 | unitConstructFinish |
玩家单位事件 - 完成建筑升级 | unitUpgradeFinish |
任意玩家单位事件 - 选择单位 | unitSelected |
任意玩家单位事件 - 选择单位 | onUnitSelected |
任意单位事件 - 开始施放技能 | unitSpellCast |
任意单位事件 - 开始施放技能 | onUnitSpellCast |
任意单位事件 - 发动技能效果 | unitSpellEffect |
任意单位事件 - 发动技能效果 | onUnitSpellEffect |
任意单位事件 - 死亡 | unitDeath |
任意单位事件 - 死亡 | onUnitDeath |
任意单位事件 - 被攻击 | unitAttacked |
任意单位事件 - 被攻击 | onUnitAttacked |
任意单位事件 | anyUnitEvent |
任意单位释放技能总事件 | anyUnitSpellEvent |
太阳事件带on和不带on的有很大区别,可以细细展开