We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
API.data
API.dat()
API.data['db']
API.sav()
API.data['config']
API.cfg()
v0.2的关键变更之一
v0.2
引擎在初始化时,就会将data/中的所有数据文件加载到内存(API.data)中,这样很方便,但有如下劣势:
data/
劣势出现的根本原因来自于数据调用的机制,由于游戏开发时是调用的字典,而引擎无法得知开发者调用的动作,所以只能在一开始将所有数据加载到内存中,让开发者能够调用任何数据。
调用
为了解决这个问题,现使用函数代替字典,将调用动作明确传入引擎,引擎就可以根据这一动作进行数据调用操作。这样改变的优势如下:
现分析原API.data所起到的作用:
API.data['config.system']['main']
main
API.data['data.test']['tmp']
tmp
API.data['db']['tmp']
API.data['config.*']
API.data['data.*']
API.data['tm']=TimeManager()
现将原功能拆解为4个函数:
API.cfg('*')
API.dat('*')
API.data['*']
API.tmp('*')
向后兼容
The text was updated successfully, but these errors were encountered:
计划合并至#20
Sorry, something went wrong.
miswanting
No branches or pull requests
重构Data模块
重构目标
API.data
替换为API.dat()
API.data['db']
→API.sav()
API.data['config']
→API.cfg()
性质
v0.2
的关键变更之一变更原因分析
引擎在初始化时,就会将
data/
中的所有数据文件加载到内存(API.data)中,这样很方便,但有如下劣势:劣势出现的根本原因来自于数据调用的机制,由于游戏开发时是调用的字典,而引擎无法得知开发者
调用
的动作,所以只能在一开始将所有数据加载到内存中,让开发者能够调用任何数据。为了解决这个问题,现使用函数代替字典,将
调用
动作明确传入引擎,引擎就可以根据这一动作进行数据调用操作。这样改变的优势如下:涉及到的工作
现分析原API.data所起到的作用:
API.data['config.system']['main']
获取的是config/system.cfg文件中的main
的值;API.data['data.test']['tmp']
获取的是data/test.cfg文件中的tmp
的值;API.data['db']['tmp']
获取的是存档数据中的tmp
的值;API.data['config.*']
、API.data['data.*']
和API.data['db']
三个域之外,还可以使用其他自定义域来存放数据,甚至是二进制、Runtime数据,如API.data['tm']=TimeManager()
;现将原功能拆解为4个函数:
API.data['config.*']
→API.cfg('*')
API.data['data.*']
→API.dat('*')
API.data['db']
→API.sav()
API.data['*']
→API.tmp('*')
兼容性
向后兼容
工作量化
The text was updated successfully, but these errors were encountered: