一、前言

今天主要学习太阳编辑器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、运行效果:

**知识点:
1、getUnitTypeSolarData是设置单位类型的自定义值,getItemTypeSolarData是设置物品类型的自定义值,其他类型的可以访问太阳编辑器框架"solar/common/DataBase"查看。
2、db是DataBase的缩写。
3、PlayerUtil.text = DisplayTextToPlayer,它是来自太阳编辑器框架的玩家工具,路径:"solar/util/game/PlayerUtil"。**

三、太阳中心事件

逆天触发器可以在同一个触发的触发动作中新建逆天触发器,逆天触发器可以设置参数,参数属于局部变量,可以避免变量冲突。
有人形象的说:逆天触发器,其实就是让不会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;
})

**知识点:
1、SetHeroStr是设置英雄的力量属性。了解更多可以访问太阳编辑器框架:“\solar\atrribute\BigAttributeCompatibleState.ts”
2、se是指太阳中心事件,了解更多可以访问太阳编辑器框架:“solar\common\SolarEvent.ts”**

太阳中心事件关键词
玩家输入聊天信息playerChat
任意单位伤害事件unitDamaged
单位进入区域enterRect
任意单位事件 - 获得物品unitPickupItem
任意单位事件 - 获得物品onUnitPickupItem
任意单位事件 - 丢弃物品unitDropItem
任意单位事件 - 丢弃物品onUnitDropItem
任意单位事件 - 使用物品unitUseItem
任意单位事件 - 使用物品onUnitUseItem
玩家单位事件 - 完成建造unitConstructFinish
玩家单位事件 - 完成建筑升级unitUpgradeFinish
任意玩家单位事件 - 选择单位unitSelected
任意玩家单位事件 - 选择单位onUnitSelected
任意单位事件 - 开始施放技能unitSpellCast
任意单位事件 - 开始施放技能onUnitSpellCast
任意单位事件 - 发动技能效果unitSpellEffect
任意单位事件 - 发动技能效果onUnitSpellEffect
任意单位事件 - 死亡unitDeath
任意单位事件 - 死亡onUnitDeath
任意单位事件 - 被攻击unitAttacked
任意单位事件 - 被攻击onUnitAttacked
任意单位事件anyUnitEvent
任意单位释放技能总事件anyUnitSpellEvent