- 好友
- 4
- 在线时间
- 0 小时
- 最后登录
- 2024-11-16
见习骑士
- UID
- 3199602
- 第纳尔
- 1162
- 精华
- 0
- 互助
- 36
- 荣誉
- 0
- 贡献
- 1
- 魅力
- 227
- 注册时间
- 2020-9-4
鲜花( 60) 鸡蛋( 0)
|
本帖最后由 vegetto 于 2023-5-9 07:44 编辑
接触过一点界面prsnt的制作者应该都切身体会过两个问题,第一是由container延伸出来的下拉滚动条无法记录位置,二是overlay中的文字部分虽然可以用overlay_set_text修改,但大量以图片为基础的overlay(比如mesh、立绘、item等)用常规手段刷新比较困难,诚然,在我个人实践研究和与前辈讨论下,考虑出直接重新start_presentation可以解决第二个问题的方法(只是水平有限不排除大家有更好的方法可以在下面提出)但下拉滚动条的位置也会刷新回最上端。如果制作的prsnt中有大量下拉滚动条,这个问题将严重影响游戏体验,因此,我们需要一个overlay_set_text那样的方式,像刷新文字一样及时刷新各种图片。在下面我先给出一种方法,再讲讲它的问题。
首先在ti_on_presentation_load部分正常定义这个图片- (create_mesh_overlay_with_item_id, "$g_presentation_mesh_1", 0),
- (position_set_x, pos1, XXX),
- (position_set_y, pos1, XXX),
- (overlay_set_position, "$g_presentation_mesh_1", pos1),
复制代码 (我这里是create_mesh_overlay_with_item_id,这个操作符我觉得其实应该是类似于用mesh生成overlay)记得返回值存进全局变量里,并记下这个全局变量的名字。
然后在刷新部分,比如在ti_on_presentation_event_state_change里- (overlay_set_display, "$g_presentation_mesh_1", 0),
- (create_mesh_overlay_with_item_id, "$g_presentation_mesh_1", ":state_no"),
- (position_set_x, pos1, XXX),
- (position_set_y, pos1, XXX),
- (overlay_set_position, "$g_presentation_mesh_1", pos1),
复制代码 先给它隐藏掉,再用同样的全局变量原样生成一个新的overlay。从视觉效果来看,就相当于“刷新”了。因为并没有用start_presentation重置整个页面,所以不会出现下拉滚动条回到最顶上的情况。
但是这个方法也有个问题。虽然表面上看起来是刷新了这个overlay,但实际上它的编号还在,内容也还保留着,相当于只是新生成了一个overlay然后把编号assign进了它的全局变量里。如果把现在显示的overlay隐藏,再让之前的显现,依然可以恢复如初。像在我这个prsnt中,ZY的图片本来是55号的,每刷新一次,这个数值就会+1。如果玩家一直停留在这个界面,连续刷新几亿次,这个prsnt各种意义上都肯定会崩溃。不过,崩溃了想要挽救也很简单——关掉这个界面重开就行了。
|
-
刷新后
-
刷新前
评分
-
查看全部评分
|