- 致编者:请牢记我们的域名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名称、版本号等需要在多处地方使用的量保存在一个单独的模块文件里,以便将来维护修改。
到這裏,我們就已經成功地註冊了自己的系統,可以開始着手編輯自己的腳本了!