一、前言

今天主要学习太阳编辑器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