mod解决方案基石 小型编译TXR
yunzl 发表于 2019-04-23 04:03:59 565

在开始介绍前,高呼三声yal大法好

该脚本组允许你编译一段类gml脚本并运行,性能还算不错的样子

然后是git

https://bitbucket.org/yal_cc/txr2/src/master/

几个函数

具体细节在txr-doc.html里,这里只简单介绍几个函数

    //暴漏一个脚本给txr
    txr_function_add("trace", scr_trace, -1);
    //0:脚本名称
    //1:脚本资源id
    //3:参数数量
    //添加一个常数给txr,可以用于声明资源
    txr_constant_add("sprite0",0)
    //0:常数名
    //1:内容
    //编译一段代码并返回一系列动作
    //如果有错误,则返回undefined并将错误文本存储在txr_error中
    txr_compile(@'
        return "hello!";
    ')
    //0:脚本字符串
    //运行一系列动作,也就是txr_compile返回的内容
    txr_exec(pg)
    //0:动作
    //...:argument参数

一些实用技巧

众所周知gmlive是世界上最好用的扩展,而且gmlive的作者也是yal 这两个小东西有些类似的地方,我们通过魔改gmlive来达到一些目的

顺带着初始化txr

live_preinit_apih脚本第一行加入txr_init()

暴露所有函数给txr

live_preinit_apih脚本有个字符串l_gmlFuncs 储存了所有函数列表,用于暴漏给gmlive 但是gmlive和txr的声明方法略有不同,所以不能直接拿过来用

    while(!file_text_eof(l_lines)){
        var l_line=file_text_read_string(l_lines);
        file_text_readln(l_lines);
        var l_sep=string_pos("=",l_line);
        var l_fun_name=string_delete(l_line,1,l_sep)
        var l_fun_id=live_script_get_index("__lnc__f"+string_copy(l_line,1,l_sep-1))
        gml_func_add(l_fun_name,l_fun_id);
        l_fun_name=string_copy(l_fun_name,1,string_pos("(", l_fun_name)-1)
        txr_function_add(l_fun_name,l_fun_id,-1);
    }

这段魔改切割了每个函数(之后的部分使其适合txr

给txr添加资源的常量

    //添加用户的脚本
    for (var i = 0; script_exists(i); i++) {
        var s = script_get_name(i);
        txr_function_add(s,i,-1)
    }
    //添加sprite
    for (var i = 0; sprite_exists(i); i++){
        txr_constant_add(sprite_get_name(i), i);
    }
    //添加obj
    for (var i = 0; object_exists(i); i++){
        txr_constant_add(object_get_name(i), i);
    }
    //如果你有其他资源也可以用类似的方法

最后

娴熟的使用的话这将会是一个非常不错的mod解决方案基石, 当然不太适合大量调用就是了,不过性能还算是可以接受(yyc) 总之是个十分泛用的神器 在我心中他的实用性仅次于gmlive

最新回复 (4)
  • GM2_student 发表于 2019-04-24 10:21:17
    0 2
    虽然没看明白,但还是给个赞
  • summer0f0 发表于 2019-05-18 10:26:33
    0 3
    意思就是在GMK里导入3D素材么?我是萌新,正在准备学习这个。
  • summer0f0 发表于 2019-05-18 05:18:17
    0 4
    请问楼主有没有什么实例文件,发一个出来学习学习
  • summer0f0 发表于 2019-05-18 05:22:32
    0 5
    刚查了一下,gmlive就是边写代码,就可以实时预览的是吧,好像挻不错的