actboy168 / YDWE

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

当we中的触发数据没有更新时,似乎不会重新保存触发 #149

Closed PhoenixZeng closed 5 years ago

PhoenixZeng commented 5 years ago

然而触发是采用的外导入如一个j文件 j文件又使用lua预处理 require 了一个lua文件(其中是一些生成物编的lua) 当更新lua文件时, 添加删除代码不会产生修改物编的效果. 必须退出yd再打开重新保存一次

PhoenixZeng commented 5 years ago

开启和关闭智能代码注入不会影响这个现象

sumneko commented 5 years ago

require 函数只会加载同一个名字的脚本一次,因此你 require 过生成物编的lua后,再次 require 这个lua是不会重新加载你修改过的代码的。require 的具体说明可以看这里:https://cloudwu.github.io/lua53doc/manual.html#pdf-require

你可以改用 loadfile 来加载生成物编的lua,或是在 require 之前清除 package.loaded 中的缓存,这些方法你都可以在上面的Lua文档中找到。

PhoenixZeng commented 5 years ago

谢谢了. 已经解决

PhoenixZeng commented 5 years ago

@sumneko 1当时用 loadfile 时 似乎依旧会读取到缓存的文件 我在文件中打印日志保存后 去掉日志再保存 依旧在ydwe.log中看到了日志 2 顺便提问

A = 1
require "aa"  --在aa.lua中使用A会报错, 必须显式的_G["A"] = A. 这个是lua原本的情况吗?我记得全局变量直接声明的