Replies: 4 comments 12 replies
-
|
关注了 |
Beta Was this translation helpful? Give feedback.
-
|
手机码字,就简单反馈一下。
这几天周末空闲时跑了一下 ant 的 simple 例子,特别又把 deepspace 那个仓库也运行起来了,就是没有找到怎么通过编辑器修改已有的 entity 。然后之前提了 Fail to running editor test/simple 那里发现,无论是 simple 还是 deepspace ,setting 文件的 effect 的 enable 都是 false ,这样运行 editor 会有报错,改成 true 时 editor 能运行,但是游戏又显示异常。即使 editor 能运行,也是一个空场景,还是未能成功修改 prefab 数据。 还有 ant 现阶段是不是可以创一个电报群或者 discord 群来实时沟通一些报错信息呢?我个人觉得有个群沟通会挺好的,有需要的话我可以创一个电报或者 discord 。 |
Beta Was this translation helpful? Give feedback.
-
|
能不能提升下日志刷新频率(或者提供一个可以修改的接口),目前大概是0.5秒左右刷一次,在通过观察日志调试逻辑的时候(或者点击某个按钮打印一条输出)不太方便,体验类似于顶着300ms的延迟在开发游戏 = = |
Beta Was this translation helpful? Give feedback.
-
|
我想到一个问题。wiki中对RmlUI的介绍有这样一段话:
这是不是意味中场景与UI的更新频率是不一致的。 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
目前 Ant Engine 的用法比较杂乱,缺乏详细的文档,很多功能只能从源码中求证。
如果只是写一些简单的 demo 的话,其实用不上太多的功能。所以我打算维护一个精简版的框架,从最基本的功能做起,争取同步提供 API 文档。因为 Ant 已有较为完善的包管理机制,所以我用一个独立 package 的形式提供,不侵入已有代码。使用者完全可以只使用精简框架提供的一组 api ,不用了解任何引擎的底层细节。
因为这个框架刚开始做,提供的功能非常有限。它比较适合做第三人称视角的 demo 。框架放在 ant.framework.demo 这个包中。以后如果有其它想法,可以再提供其它类型的框架。
使用它可参考 https://github.com/ejoy/ant/tree/master/test/demo ,启动命令行为:
运行后,会看到如下画面
这个 demo 演示了:
在启动文件 main.lua 中,只需要写:
其中:
在这个例子中,设置了配置文件 /code/config.ant
/code/main.lua 是入口文件,它演示了框架支持的一系列特性。
callback
入口文件必须返回一个 table (game),里面设置必要的回调函数。其中:
function game.update()
必填项,框架每帧会调用这个函数。
function game.keyboard(key)
选填项,每次按键抬起时框架会调用它。
function game.mouse(btn, state, x, y)
选填项,每次鼠标案件按下时框架会调用它。
注:鼠标移动不会触发这个函数,关于获取鼠标位置,见下面的 API 文档。
API
require(name)
和 Lua 标准的 require 用法类似,但不支持 package.path 等设置项。
print_r
用于调试。可递归打印 table 的内容。
ant.import_prefab(name)
导入一个 prefab 文件,无返回值。通常用于导入光照信息等。
obj = ant.primitive(name, obj)
创建一个预制体,设定初始参数 obj 。返回控制器对象,直接修改控制器即可更新对象属性。
name 可以为 cube ,plane ,sphere 。
obj 为 table 其中
例:
这可以创建一个立方体,大小为 1x1x1 。其中心点在 (0,0, 0.5) 处,并设其为可见(默认),颜色为红色。
obj = ant.prefab(name, obj)
同 ant.primitive ,但加载一个 glb 或 gltf 文件。
obj = ant.sprite2d(texture_name, obj)
同 ant.primitive ,但生成一个 2d 面片,并贴上 texture_name 指定的贴图。
ant.sprite2d_base(pixels)
设置 sprite2d 使用贴图的像素比例,默认为 128 ,即当贴图宽度为 128 像素时,在 3d 空间宽一个单位。
ant.remove(obj)
删除一个对象。
ant.maxfps(n)
设置最高帧率
ant.gui_open(html)
打开一个 html 文件作为图形界面
ant.gui_listen(message_name, callback)
监听从图形界面发来的消息
ant.gui_send(...)
像图形界面发送一个消息,不等待回应。
ant.gui_call(...)
像图形界面发送一个消息,并等待返回值。
ant.setting
如果启动时填了 setting 文件名,那么这会指向对应的表。如果未填,该项为空。
ant.key_press
查询当前键盘按键状态。例如,ant.key_press.A 为 true 时,表示 A 键按下,为 false 时,A 键抬起。
ant.mouse_state
鼠标的状态:.x .y 为鼠标光标所在屏幕坐标。.left 和 .right 为左右两个键的状态。
ant.camera_ctrl
摄像机控制器,可以通过修改这张表的项目,控制摄像机的状态:
x, y = ant.camera_ctrl.screen_to_world(x, y)
将屏幕坐标(通常是鼠标位置)换算成 XY 平面的坐标。返回值可能为空(无法转换到 XY 平面上)。
ant.gesture_listen(name, callback)
监听图形界面没有处理的手势事件。建议处理手势而不是直接处理鼠标消息。这可以和图形界面协同工作。手势会先发送给 GUI 处理,只有当 GUI 处理不了时,这个 api 才会触发回调。
callback 函数接收一个 table 参数,是手势的参数。所有手势均有参数 timestamp ,是消息发生的时间戳。
目前支持以下手势:
ant.show_debug(enable)
开关 debug 文本显示
ant.print(obj, text)
在 obj 的屏幕所谓位置输出 text 。需要把 show_debug 打开。
ant.profile_enable(enable)
在 debug 文本中列出性能分析数据。
Beta Was this translation helpful? Give feedback.
All reactions