找回密码
 点一下
查看: 669|回复: 4

SE没有GethandleId,大家是怎么绑定数据的

[复制链接]
发表于 2016-10-16 22:16:12 | 显示全部楼层 |阅读模式
说真的,今天仔细扒了一遍触发器,发现在WE里面一个很关键的函数GetHandleId在SE里面似乎根本不存在。

玩过WE的亲们都知道GetHandleId在WE里面的重要性,在它之前是ReturnBug,没有了这种强制类型转换又不用枚举法,很多WE的功能和技能都无从谈起。

那么大家用什么办法解决数据绑定这个问题呢?

数据绑定,说得简洁明了一些就是:
把一些风马牛不相及的元素以某种方式关联成一个集合,使得我们在有集合中某一元素和特定求解条件的情况下就能求出整个集合。

具体的例子就是,
比如我有一个单位u和一个计时器t,现在我把它们用特性标签c绑起来之后,当计时器t到期时,就能通过c精准无误地得到与t绑定在一起的u。

这个例子也能用枚举法来实现,但是枚举法,低效无力。

总结一下,我就是想知道SE里面能不能实现GethandleId,有的话用什么方法。

特别让头目来答一下好了,@麦德三世
也希望知道详情的亲不吝赐教,点拨迷津,先谢过。
发表于 2016-10-17 14:13:13 | 显示全部楼层
因为不需要

要给单位计时的话用buff就够了。把buff加给单位,时间一到还能自动引发效果。


哪还需要计时器啊
回复

使用道具 举报

发表于 2016-10-18 07:57:06 | 显示全部楼层
UnitGetTag,也就是单位标签,不过确实没什么用
回复

使用道具 举报

发表于 2016-10-18 09:04:01 | 显示全部楼层
原因就是计时器在SE中的地位和使用频率远比WE里的低。
WE绝大多数需要滥用计时器才能做出的效果,SE可以直接开线程来解决(SE的多个线程不仅不会造成同步问题,连运行顺序都是对的),或者用单位行为、持续性效果等方法来解决。使用计时器+HandleId来完成像技能一类的东西并不是正常的游戏开发应该有的思维,这只是WE受限于功能的无奈之举。
在开发其他功能方面,没有获取任意对象的标签在某些时刻确实会对地图开发造成一定的麻烦,有时候会让实现方法稍微绕一点,但这些麻烦都可以通过各种手段进行克服,并且都不是什么大问题。
回复

使用道具 举报

发表于 2016-10-19 10:16:04 | 显示全部楼层
楼上诸位基本上都把要说的说晚了。
我最后补充一点。在确实有必要进行数据关联时,可以用某些方法获取元素的唯一标识,尽管这不等于we中的句柄。比如单位有单位标签,对话框和对话框项可以直接转换成整数。但是对于计时器,确实没办法获取它的唯一标识。不过正如头目和7j所说,大多数情况下,并不需要绑定一个计时器到单位上,就算需要绑定,给单位附加一个行为并指定行为持续时间来作为定时装置反而更好用一点。在极端情况下,需要绑定某些没有唯一标识的东西,只好采取遍历方式来一一比对了。不过我玩编辑器到现在,虽然也没玩出什么水平,学做的东西也算不少了,确实没有遇到过这种极端情况。
最后,数据储存也不再依赖缓存,而是有用法相似但功能更强大的数据表。
总之,在数据关联和储存上,星际2比起魔兽3不但没有退步,反而是进步了很多。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-7-3 15:53 , Processed in 0.036572 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表