关于lua导出插件所导出的lua文件的格式!

创建一个新控件时

有时候是这样的:
result’NODE_EXP’]=cc.Node:create()

有时候是这样的
local NODE_EXP = cc.Node:create()

这样的话我自定义控件根本不知道哪个是时候是那个,如果我有一行lua代码要用c#生成

比如:
local luaScript = require(“LuaScript.customBtn”)

我跟本不知道用这个
luaScript.SetData(NODE_EXP, “test”)

还是用这个
luaScript.SetData(result’NODE_EXP’], “test”)

跪求cocos官方 给个答案,lua导出插件不肯开源就算了 至少告知下什么情况生成前者 什么情况生成后者吧……我是实在搞不懂

使用lua导出插件是1.3 cocos版本是2.3.2

你随便打开一个mainscene.lua
文件,会发现:
local Scene=cc.Node:create()

result’root’] = Scene
return result;

不知道你能不能明白,如果不明白,继续提问,我继续回答。

感谢版主大人搭理:12:

对不起,你说这个我不明白,而我也知道你说这个东西的存在。

我同一个csd文件,生成的lua代码,有时候就是不一一样,就是会有上述两种不同的格式。(似乎删除res后 重新生成不会有这问题?)

我就想问c#中 那个生成lua代码的方法

也就是 public override void CreateObject(BaseObjectData objectData) 这个函数里面

怎么区分这两种情况。

总之,我已经放弃抵抗,用了别的解决方案,

就是两种版本都生成,都set一次,lua那边遇到root为空的情况,就直接return

:5:

这里的确是有两种不同的声明方式, 主要是因为Lua虚拟机本身有限制, 局部变量的个数不能超过200个, 但是因为local声明的方式速度更快一点, 所以这里会进行判断处理,
也即如果总的节点个数不超过200个, 就会使用local sprite1的声明方式, 如果超过了, 就会使用Table存储的方式,

如果是自己扩展写的, 可以直接调用 LuaBaseObject.GetNameString(string name), 这个函数实现, 内部会自动进行处理的.

或者直接就使用result""]的方式也可以.

详细的, 可以看这个链接 http://www.cocos.com/doc/article/index?type=cocostudio&url=/doc/cocos-docs-master//manual/studio/v4/chapter3/Directory/../Extend/Directory/zh.md