actboy168 / YDWE

A Tool to Help the Creation of Warcraft III Map
GNU General Public License v3.0
462 stars 139 forks source link

lua预处理为何会删除对象 #156

Closed PhoenixZeng closed 5 years ago

PhoenixZeng commented 5 years ago

操作如下 1采用 预处理生成一个对象 2在ydwe物编中复制 生成的对象 保存 3 复制产生的对象会被删除

另外: 提问预处理阶段的StringHash函数现在怎么调用

PhoenixZeng commented 5 years ago

@sumneko @actboy168

PhoenixZeng commented 5 years ago

版本是1.32.11

sumneko commented 5 years ago

默认情况下,物编生成出来的对象是依赖生成代码的,因此你复制出来的对象由于没有对应生成代码而被删除。你可以在生成对象时使用 permanent 方法来使对象永久存在,具体可以参考演示图。

PhoenixZeng commented 5 years ago

但是我在物编中复制这个操作 应该属于在物编中新建了一个对象吧 . 在物编中进行创建的对象应该不属于预处理的这一套体系,应该不受预处理的控制吧.

permanent方法的这个我知道 这个在需求之外了. 目前的场景是我用lua生成了一批单位,但是为了后期批量修改这批单位,所以需要保持依赖代码这个状态. 然后我需要对其中某个单位制作幻象马甲的时候 复制单位出现此现象.

猜想: 是不是物编中的对象有一个隐藏的字段来标志这个对象是否由代码生成,然后我复制生成的对象也把这个隐藏的字段复制了. 如果是这样的话,在ydwe物编中进行复制操作的时候取消掉这个字段就好了

sumneko commented 5 years ago

就你这个需求而言,幻象马甲的属性应该与原单位同步,但原单位的属性由生成代码决定,无法影响到你复制出来的单位。因此你的幻象马甲也应该由代码生成。

PhoenixZeng commented 5 years ago

有道理 . 能告诉我 预处理阶段的StringHash函数现在怎么调用吗? 直接用会提示没有这个函数 是名字变了还是需要require谁?

sumneko commented 5 years ago

我专门测了一下,StringHash 是有效的。

PhoenixZeng commented 5 years ago

感谢