Skip to content

能讲讲LuaAsset/LuaImporter相关的用法吗 #910

Open

Description

@oOtroyOo

就是刚新搭建的项目,忽然发现Unity能识别.lua的文件了,而不是从前的教程中说的 需要改成.lua.txt。
一路发现了 这次今年的提交 #c2cbaf8d 。
新增有 LuaImporter,LuaAsset ,XXTEA 这些文件。似乎是关于导入和加密的
不过我并没有查到怎么使用。简单的require似乎找不到文件。

Activity

  1. oOtroyOo commented on Aug 2, 2021

    @oOtroyOo
    ContributorAuthor

    实际上我觉得只保留这样的LuaImporter,让Unity能够将lua识别为TextAsset就够了。未必要用LuaAsset之中的内容。

    [ScriptedImporter(2, new[] { "lua" })]
    public class LuaImporter : ScriptedImporter
    {
        public override void OnImportAsset(AssetImportContext ctx)
        {
            var asset = new TextAsset(File.ReadAllText(ctx.assetPath));
            ctx.AddObjectToAsset("main obj", asset);
            ctx.SetMainObject(asset);
        }
    
    }
    
  2. chexiongsheng commented on Aug 3, 2021

    @chexiongsheng
    Collaborator

    这是外部提交的PR。
    加密我觉得确实没啥用,打算删了。

  3. oOtroyOo commented on Aug 3, 2021

    @oOtroyOo
    ContributorAuthor

    我能理解这种做法。不过仍然有疑问。

    • 比如立即编译lua源码成unity资源,确实不错,但是默认情况缺少luac.exe。又不是人人都配了build环境去编译。我看了一下批处理读的是VS2015和2017的库,我装的是VS2019啊。不想配编译。又不知道哪里去搞exe
    • 密码直接写在了LuaAsset文件里面,如果我想保持xlua目录干净,以备和最新官方源码一致。则必须要改这个文件就不行了。
    • LuaAsset这个Require方法走的还是Resourses。所以还是得去自己实现Require方法。显得LuaAsset没有意义
  4. chexiongsheng commented on Aug 4, 2021

    @chexiongsheng
    Collaborator

    实际上我觉得只保留这样的LuaImporter,让Unity能够将lua识别为TextAsset就够了。未必要用LuaAsset之中的内容。

    [ScriptedImporter(2, new[] { "lua" })]
    public class LuaImporter : ScriptedImporter
    {
        public override void OnImportAsset(AssetImportContext ctx)
        {
            var asset = new TextAsset(File.ReadAllText(ctx.assetPath));
            ctx.AddObjectToAsset("main obj", asset);
            ctx.SetMainObject(asset);
        }
    
    }
    

    合理,你提议的,你提个PR过来吧?

  5. oOtroyOo commented on Aug 4, 2021

    @oOtroyOo
    ContributorAuthor

    这涉及要删代码,不敢提。😂

  6. oOtroyOo commented on Aug 5, 2021

    @oOtroyOo
    ContributorAuthor

    我又去看了看源码。2018以下 new TextAsset()不支持带参数。而text字段只有get,走底层了。应该兼容不了。除非有另外能找到new出来的办法。还是得留一个LuaAsset

  7. HomlesFish commented on Aug 25, 2021

    @HomlesFish

    我主要是用luaasset.GetDecodeBytes()返回bytes时,luaEnv.Dostring()会报告lua有错,但我又不明白为什么会有错,然后我把lua文件后缀改成.txt了,再返回bytes给dostring就一切正常了。我怀疑是我不会用luaasset,网上搜了半天也没找到该怎么解决

  8. arctic252 commented on Nov 29, 2021

    @arctic252

    我主要是用luaasset.GetDecodeBytes()返回bytes时,luaEnv.Dostring()会报告lua有错,但我又不明白为什么会有错,然后我把lua文件后缀改成.txt了,再返回bytes给dostring就一切正常了。我怀疑是我不会用luaasset,网上搜了半天也没找到该怎么解决

    luaasset.GetDecodeBytes()的返回值写错了,应该返回已经解码过的decode而不是data。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions