赞 | 6 |
VIP | 22 |
好人卡 | 15 |
积分 | 13 |
经验 | 97563 |
最后登录 | 2022-11-26 |
在线时间 | 831 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1323
- 在线时间
- 831 小时
- 注册时间
- 2007-12-25
- 帖子
- 1558
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
一切的一切都归功于紫苏大人。
否则我不知道世界上有这玩意。
四叉树管理器,用于快速取得指定范围内的事件,指定位置的事件。无需遍历所有事件
只是稍微性能上提升了,因为RM的卡不仅仅是在移动遍历事件上。- #===================================================================
- # ■ Accelerator
- #--------------------------------------------------------------------
- # 四叉树管理器
- #====================================================================
- =begin
- 脚本名称:四叉树管理器
- 版本:1.0
- 作用:在有大量事件的地图上,增加获得目标点事件组的速度。
- 多用于ARPG,以及射击类游戏。
- 使用方法:插入脚本即可。
- 注意事项:事件较少,完全可以不需要此脚本。
- 原理/过程:
- 四叉树→
- 将地图先扩大到正方形,且边长为2**n,比如 32*32 64*64大小。(取名总地图)
- 将总地图田字平分为4等分,如32*32的,就分成4个16*16的子地图块
- 统计每一个地图块里拥有的事件总数,若超过6(6是自适应数,可更改)
- 则将该子地图块,再平分成4个子地图块,以此类推,最小能平分成4个1*1的地图块。
- 最顶层树(树干)Plane_Base类
- 该类拥有4个子块
- ┌───┐
- │ │
- └─┬─┘
- │
- ┌─┬┴┬─┐
- │ │ │ │
-
- 子块可能为,数值,树叶两种结构。
- 树枝的结构 依旧拥有4个子块 Plane_Tree
- ┌───┐
- │ │
- └─┬─┘
- │
- ┌─┬┴┬─┐
- │ │ │ │
- 树叶的结构 Grouping
- ┌───┐
- │ │
- └─┬─┘
- │
- ─┬─┬┴┬─┬─┬─┬
- │ │ │ │ │ │
- event event ……
-
- 树叶为最底层,用于保存事件的位置。
- Plane_Base 类方法
- gro_xy(x,y) 直接获得x,y点最小事件范围组,直接遍历这个组,就能获得x,y点上的事件。
- move(event,xt,yt) 将event事件移动到xt,yt点(事件移动后,对树的重新操作)
- rect_events(x0,y0,xt,yt) 获得矩形区域内的所有事件
- =end
复制代码 为了演示,所以将4叉树插入四方向移动里。
该脚本还估计还有20%的优化空间
该脚本绝非为伸手党而作,只是为了研究。
别拿它跟防卡脚本比,不是一回事。
付费求高手指处其中缀余代码,以及可以优化的地方。
献上附件!!
|
评分
-
查看全部评分
|