- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
Minecraft基岩版开发Wiki:技术周报/21m02w03a
技术更新[编辑]
官方Beta[编辑]
本周官方发布了Beta 1.16.210.60 更新,其中技术性更新如下:
- 添加了游戏测试框架(En:GameTest Framework)。
- Mojang 即将停止对 Android 系统 4.4 及以下版本的游戏支持,详情可查询官方支持设备清单页面
技术茶馆[编辑]
本期主题:《中国版 ModAPI 引擎的基本结构》
本站的 Mod SDK
页面已对 Mod API
进行了基本介绍,相信各位对于它在网易特色组件中的重要性也有了一定了解。本期我们来了解一下它的基本结构,以及如何在开发实战中使用这个功能强大的引擎。
基础环境准备[编辑]
因为网易并没有为手机端提供可以实时测试脚本的工具,所以建议使用电脑进行脚本的编写和测试。
推荐配置:
内存:4GB+ RAM
系统:windows 7 及以上
可用存储空间:2GB+
在开始前,请务必确认您至少已经了解 Python (2.7版本)中的以下内容:
- 数据类型和变量
- 条件判断和循环
- 使用dict
- 调用函数
- 定义函数
- 函数的参数
- 使用模块
- 类和示例
现在,让我们开始吧!
文件路径设置[编辑]
首先,让我们在组件的行为包根目录下创建一个单独的文件夹放置脚本文件。文件夹的名字可以随意,但推荐取比较有特色的名称以防可能出现的冲突。(注:路径一定要是非中文!)
网易的脚本系统在识别脚本时,并不会根据文件夹的名称,而是根据文件夹下的 __init__.py
文件进行识别。故在每个放有脚本文件的文件夹下(哪怕是已经包含在脚本文件夹内的子文件夹)都需要放置一个名称为 __init__.py
的文件,否则该文件夹下的脚本便无法识别。该文件内什么都不需要写,只起到一个辨别的作用。
下面列出从行为包根目录开始的最简结构。
- behavior_packs_xxx
- entities
- xxxScripts
- __init__.py
- modMain.py
- ...
- ...
- manifest.json
正式起步[编辑]
现在,我们已经拥有了一个最基础的环境,可以开始着手构建系统了。
我们需要一个名为 modMain.py
的文件对系统进行注册。modMain
是 Python 逻辑的入口文件,需要包含 mod 的初始化与退出时的处理一些初始化函数。
下面是一个 modMain
实例,对该文件的结构进行解释。
Mod 属于 SDK 的内部类,用于绑定
from mod.common.mod import Mod
# 分别导入服务端与客户端的API进行绑定
import mod.server.extraServerApi as serverApi
import mod.client.extraClientApi as clientApi
# 将引擎的方法绑定到类上用于识别
@Mod.Binding(name = "testMod", version = "0.0.1")
class testMod(object):
def __init__(self):
pass
# 服务端脚本初始化的入口函数
#当然,如果您不需要服务端,您可以直接pass掉它
@Mod.InitServer()
def testServerInit(self):
serverApi.RegisterSystem("testMod", "testModServer", "Scripts.ServerSystem.ServerSystem")
#RegisterSystem的三个参数分别是[Mod名称][System名称][System类路径](路径从行为包根目录开始计算,中间以“.”隔开而不是“/”。下面客户端注册同理)
# 服务端脚本在退出时执行的析构函数
@Mod.DestroyServer()
def testServerDestroy(self):
pass
# 客户端脚本初始化的入口函数
@Mod.InitClient()
def testClientInit(self):
clientApi.RegisterSystem("testMod", "testModClient", "Scripts.ClientSystem.ClientSystem")
# 客户端脚本在退出时执行的析构函数
@Mod.DestroyClient():
def testClientDestroy(self):
pass
#备注:建议将Mod名称、版本号等需要在多处地方使用的量保存在一个单独的模块文件里,以便将来维护修改。
到这里,我们就已经成功地注册了自己的系统,可以开始着手编辑自己的脚本了!