找回密码
 点一下
查看: 794|回复: 15

想把一团数据捆绑在一起,是用结构体好还是数据表好?

[复制链接]
发表于 2015-1-14 17:40:52 | 显示全部楼层 |阅读模式
额,首先,新人求罩。。。

我是Mod{种族宏机制强化}的作者“恋逍遥”,在Mod中我采用了结构体的办法将单位“神族玩家死掉的单位”和“死亡次数”捆绑在了一起,并且为了保存一大坨单位,采用了数组【400】的方式。
当然我不是说占内存多少啦,可是一旦数组超界的话,就无法正常运行与读取了。

但是用数据表的呢,路径怎么设置才能既避开重复,又能合理呢?
 楼主| 发表于 2015-1-14 17:43:09 | 显示全部楼层
顺便问一下,循环中添加等待是怎么做到的……感觉SE好神奇,这都能做到。。。
回复

使用道具 举报

发表于 2015-1-15 10:28:05 | 显示全部楼层
用 整数-单位-单位标签 试试看?

点评

如果单位复活的话,这个值会不会变啊。。。  发表于 2015-1-18 20:33
回复

使用道具 举报

发表于 2015-1-15 10:38:22 | 显示全部楼层
循环中添加等待很多语言都支持吧....
数据表的话,你那个数据到底要记录啥?

点评

以一个单位为中心,记录包含整数的一些周边数据。 话说循环等待那个,我在C++学习的时候尝试自己做东西,结果就发现For循环内调用Wait没效果,直接死循环了。。。  详情 回复 发表于 2015-1-18 20:32
回复

使用道具 举报

发表于 2015-1-15 10:47:49 | 显示全部楼层
路径避免重复很简单吧。比如记录死掉的单位就用

DeadUnit1
DeadUnit2
DeadUnit3
DeadUnit4

这样下去。

点评

是这样:单位死亡——是神族战斗单位——查找单位是否复活过——(复活过)——不允许再次复活——(没复活过)——允许复活。而不允许再次复活的那些单位所占据的数据储存空间就可以释放掉了。因为要对“单位是否复  详情 回复 发表于 2015-1-18 20:29
回复

使用道具 举报

发表于 2015-1-15 19:09:23 | 显示全部楼层
路径什么的应该不难吧,可以很容易想到若干种命名方法,只不过你需要考虑怎样命名更方便快捷而已。
至于结构体,我也试用过,感觉功能很一般,某些情况下为了减少变量数目,可以考虑试用,但是对于你的要求,我觉得数据表应该更好一些。
当然,在大多数情况下,变量是足够满足要求的。
其实有一点我也弄不明白,就是数据表比起变量来讲是否访问速度更慢。假如真的效率偏低,对于某些要求高速访问的情况就有局限性了。

对于以单位为中心的数据系统来讲,我推荐使用单位自定义值+数组的方式。尽管现在有现成的方法获取单位ID,我们可以像魔兽时代那样去做一个数据系统,但是这不值得推荐,最起码你需要一些算法来避免冲突。如果采用自定义ID的方式则方便许多:你只要建立一个堆栈来存放单位可用的ID,就能很容易的做出ID发放和回收系统。另外基本不必考虑访问单位自定义值带来的效率问题,因为只有查找某特定单位的ID时才会这么做,反过来给定一个ID,让获取这个单位,读取变量就好了。当然,现在单位自定义值数量十分充足,单纯依赖自定义值几乎就能实现数据链,只不过这样的做法兼容性很差,不值得推荐而已。目前比较推荐的做法是将自定义值0用于数据系统,其余自定义值留给地图作者使用。

点评

路径什么的应该不难吧,可以很容易想到若干种命名方法,只不过你需要考虑怎样命名更方便快捷而已。 --------------------------------------- 或许吧,只要把结构体用的办法移植给那里就可以做到,不过数据表单总  详情 回复 发表于 2015-1-18 20:22
回复

使用道具 举报

发表于 2015-1-16 00:59:20 | 显示全部楼层
我没找到以结构体传参的方法 导致感觉很鸡肋......星际编辑器里的结构体除了看起来有条理一些(现版本翻译成录制)还有什么妙用吗 大神们求指教啊

点评

只能通过脚本语言来手工读取,但正想你说的结构体可以让某些数据看起来更有条理一些  发表于 2015-1-18 20:15
回复

使用道具 举报

 楼主| 发表于 2015-1-18 20:22:46 | 显示全部楼层
yxxiaobin 发表于 2015-1-15 19:09
路径什么的应该不难吧,可以很容易想到若干种命名方法,只不过你需要考虑怎样命名更方便快捷而已。
至于结 ...

路径什么的应该不难吧,可以很容易想到若干种命名方法,只不过你需要考虑怎样命名更方便快捷而已。
---------------------------------------
或许吧,只要把结构体用的办法移植给那里就可以做到,不过数据表单总让我觉得很乱,路径怎么写都无法做到像结构体那样清晰,很多时候导致我自己作图把自己弄晕乎了,以至于在WE时代我都不喜欢用HX表(就是SE的这个数据表)
有点心理阴影。。。
回复

使用道具 举报

 楼主| 发表于 2015-1-18 20:29:28 | 显示全部楼层
麦德三世 发表于 2015-1-15 10:47
路径避免重复很简单吧。比如记录死掉的单位就用

DeadUnit1

是这样:单位死亡——是神族战斗单位——查找单位是否复活过——(复活过)——不允许再次复活——(没复活过)——允许复活。而不允许再次复活的那些单位所占据的数据储存空间就可以释放掉了。因为要对“单位是否复活过”进行查找匹配,所以……
死一个就增加一个似乎会比较拖累运行速度。。
回复

使用道具 举报

 楼主| 发表于 2015-1-18 20:32:05 | 显示全部楼层
woaibusi 发表于 2015-1-15 10:38
循环中添加等待很多语言都支持吧....
数据表的话,你那个数据到底要记录啥?

以一个单位为中心,记录包含整数的一些周边数据。
话说循环等待那个,我在C++学习的时候尝试自己做东西,结果就发现For循环内调用Wait没效果,直接死循环了。。。

点评

循环内可以使用等待,但是如果你的执行时间过久,可能会超时。 另外针对你的要求,提倡自定义值加变量的方法,这个最直观,最好再加一个下标发放回收系统,其实就是一个堆栈而已。  详情 回复 发表于 2015-1-20 10:19
回复

使用道具 举报

发表于 2015-1-18 21:36:44 | 显示全部楼层
http://bbs.wow8.org/thread-194763-1-1.html
用单位自定义值做下标 自己用全局变量搭系统吧? 用起来可能麻烦一些

点评

谢谢,看到了,确实是一个很不错的构造呢。话说链表好像就是通过这样一个指针组彼此连接起来的。  发表于 2015-1-18 23:11
回复

使用道具 举报

发表于 2015-1-20 10:19:16 | 显示全部楼层
这个ID不太好 发表于 2015-1-18 20:32
以一个单位为中心,记录包含整数的一些周边数据。
话说循环等待那个,我在C++学习的时候尝试自己做东西 ...

循环内可以使用等待,但是如果你的执行时间过久,可能会超时。
另外针对你的要求,提倡自定义值加变量的方法,这个最直观,最好再加一个下标发放回收系统,其实就是一个堆栈而已。

点评

复活之后的单位还是原来的单位标签和单位自定义值嘛?不会变掉吧。。  发表于 2015-1-22 00:10
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 02:30 , Processed in 1.704992 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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