|
1.初识Jass
好吧,这一讲是给大家讲讲什么是Jass,以及学了Jass到底有什么用。
(如果您完全不会T,无所谓,只要您有英文基础,懂一点编程,就可以看这个帖子了,当然如果是纯粹的新手可以无视这个帖子,祝您好运,阿门。)
那么,首先来看看你们的需求吧。
学jass的话,一般是碰到UI(就是常说的T)瓶颈了,或是感到UI做东西非常麻烦才来学的。
打个比方,在UI里面要画出一个圆形图案,需要申请一大堆的变量,然后点到死的点出那几个数学公式,最后还要担惊受怕点和单位组泄露的问题(总之,需要N长时间)。
(图我就不上了,您有空自己用UI拖去)
如果使用Jass,那么很简洁,如下。
[jass]
---------------------------
//ox,oy就是你指定的圆心,i从0~360度变动,每次递增30度
loop
    exitwhen(i>360)   //当大于360度的时候退出
    set x = ox + cos(i) //计算出需要创建单位的X位置
    set y = oy + sin(i)  //计算出需要创建单位的Y位置
    call CreateUnit(Player(p),uId,x,y,facing) //这里是创建一个单位,完全不用管泄漏问题
    set i = i + 30         //角度+30
endloop[/jass]
--------------------------
您可以先别管能不能看懂,不说别的,就这个格式,很优美不是么~
-------------------------我是分割线----------------------------------------------------------------------
2.为什么一定要用Jass?
刚才也说了,UI和Jass的最大区别在于一个写起来很麻烦而另一个写起来很简单(当然您要有点英文基础)。
那么这里来说明一下,我们为什么一定要用Jass呢?
(其实如果可以我也是想用C,lua,python之类的。。可惜w3只支持这个)
用Jass的核心因素在于:简单 + 可扩展性
把自己放在刚才的环境下试想一下,做一个小功能,就需要耗费10倍的精力用UI拖一个,那么如果我们要做更多的功能呢?这时候简单的优势就体现出来了。
就很简单一个小功能:
将单位移动到某个坐标点的X度方向120距离的点
SetUnitPositionLoc(u,OffsetLoc(p,X,120))
如果在UI中拖呢,当然你可能看不出UI和Jass的效率区别。
但是如果我需要将这个功能对10个点使用呢?怎么办?你复制10个?万一将来哪天要改咋办?
如果在Jass中,你可以很方便地把这个功能包成一个函数,比如叫SetUnitLoc_YourName(u,p),然后以后的东西就用这个玩意,把想要移动的东西和地点传进去就好了。
使用简便,修改也方便很多。
-----------------------------------------------------------------------------------------
另外举个例子:
比如我写了一个全屏幕物品栏,A作者想用。
那么怎么办呢?
好,我提供一个函数叫做 InitFullScreenInv(Player,Unit)的东西,效果是为一个玩家启动全屏幕物品栏。
那么,他在游戏中只要在创建英雄的时候调用一下,就可以用了。。。。
是不是很简单呢?(其实这个东西就跟你自己写UI没啥区别啦,只不过这个UI是通用的,不会因为你没下载什么东西就打不开)
所以,为了世界的和平,为了爱和正义,以及为了系统移植的方便性,你还有什么理由拒绝诈死呢? |
评分
-
查看全部评分
|