|
发表于 2012-3-4 23:40:13
|
显示全部楼层
光是看代码比较难看出问题额…………
以下大部分应该与该问题无关,但是能提高一点效率
[trigger]
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
Then - 动作
单位 - 创建 1 个 步兵 给 玩家1(红色) 在 ((可用地图区域) 的中心点) ,面向角度为 0.00 度
动画 - 改变 最后创建的单位 <New> 的飞行高度为 0.00 ,变换速率: 0.00
Else - 动作
不做任何动作
[/trigger]
首先动作第一条会将单位加入最后创建的单位组,然后在创建前会先判断这个单位是否为闹鬼金矿,然后动作第二条“最后创建的单位”会调用获取最后创建单位的函数并返回一个bj单位变量,个人觉得效率没直接调用变量高;
“不做任何动作”是会调用函数的,完全可以不写任何动作,所以可以改成
[trigger]
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
Then - 动作
设置 Unit = (新建 玩家1(红色) 的 步兵 在 ((可用地图区域) 的中心点) 面向角度:0.00 度)
动画 - 改变 Unit 的飞行高度为 0.00 ,变换速率: 0.00
Else - 动作
[/trigger]
================================================
[trigger]
特殊效果 - 在 ((可用地图区域) 的中心点) 创建特效: Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl
特殊效果 - 删除 (最后创建的特效)
[/trigger]
可以改成 删除(新建特效)
================================================
[trigger]
单位组 - 添加 (触发单位) 到 (新建的空单位组)
单位组 - 为 (新建的空单位组) 添加 (触发单位)
[/trigger]
LZ用的是第一条动作,但第一条动作实际是调用了第二条动作,所以用第二条动作更快
================================================
[trigger]
循环动作[循环整数A]从 0 到 1, 运行 (Loop - 动作)
Loop - 动作
点 - 清除 P[(循环整数A)]
[/trigger]
为何不直接写 清除 P[0] 和 清除 P[1]?循环会有循环数+1的动作
================================================
[trigger]
设置 R = (P[1] 和 P[2] 之间的距离)
如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
If - 条件
R 大于 0.00
R 小于 10.00
Then - 动作
Else - 动作
[/trigger]
还有SS_TargetSize_wide[I[2]] + BF_BD_DamageRadius[I[1]]也一样,LZ在条件里写了两次加运算和两次(P[1] 和 P[2] 之间的距离),效率自然下去了,用变量记录然后调用变量比再计算一遍快多了~ |
|