“MBSubModuleBase”的版本间的差异

来自骑砍中文百科
跳转至: 导航搜索
(已保护“MBSubModuleBase”([编辑=仅允许管理员](无限期)[移动=仅允许管理员](无限期)))
复写
 
(未显示同一用户的1个中间版本)
第1行: 第1行:
 
[https://docs.bannerlordmodding.com/_csharp-api/mountandblade/mbsubmodulebase.html <big>访问源文档</big>]<br>
 
[https://docs.bannerlordmodding.com/_csharp-api/mountandblade/mbsubmodulebase.html <big>访问源文档</big>]<br>
 
[[骑马与砍杀2:霸主 MOD API|<big>返回目录</big>]]<br>
 
[[骑马与砍杀2:霸主 MOD API|<big>返回目录</big>]]<br>
 +
<br>
 +
<big>你可以通过继承 MBSubModuleBase 类来处理你的模组的加载,它本质上是你的代码入口。这里有几种有用的复写,例如你可以利用的 '''OnSubModuleLoad()''' 和 '''OnApplicationTick()'''。<br>
 +
不过需要注意的是,你必须在你的模组的 '''SubModule.xml''' 中引用这个类的完全限定名,才能够正常工作。<br>
 +
在示例 [[SubModule|'''SubModule.xml''']] 中,'''ExampleMod.MySubModule''' 是继承 '''MBSubModuleBase''' 的类的完全限定名。</big><br>
 +
== <big>复写</big> ==
 +
<big>这是可用复写的完整列表,按它们(通常)调用的顺序排列。这是一个大概的指南,当你遇到执行顺序错误时不能用作debug的标准。</big>
 +
<big>
 +
* '''OnSubModuleLoad()''' - 在游戏首次加载时首先调用,这里应该是你的做初始设置的地方。
 +
* '''OnApplicationTick(float)''' - 这里每 Tick 调用一次,这里你应该避免做一些复杂的工作而着重考虑性能。
 +
** '''float''' - 毫秒为单位,去执行的时间
 +
* '''OnBeforeInitialModuleScreenSetAsRoot()''' - 主菜单出现前调用,如果你的模组有什么需要初始化的东西这会非常有用。
 +
* '''OnGameStart(Game, IGameStarter)''' - 主菜单选择游戏模式(子模组)后立即调用。
 +
** '''Game''' - 参阅 [https://docs.bannerlordmodding.com/_csharp-api/core/game.html Game]
 +
** '''IGameStarter''' - N/A
 +
* '''BeginGameStart(Game)''' - 加载选定的游戏模式(子模组)后立即调用。
 +
** Game - 参阅 [https://docs.bannerlordmodding.com/_csharp-api/core/game.html Game]
 +
* '''OnGameLoaded(Game, object)''' - 加载存档后立即调用。
 +
** '''Game''' - 参阅 [https://docs.bannerlordmodding.com/_csharp-api/core/game.html Game]
 +
** '''object''' - N/A
 +
* '''OnCampaignStart(Game, object)''' - 游戏模式一开始立即调用。
 +
** '''Game''' - 参阅 [https://docs.bannerlordmodding.com/_csharp-api/core/game.html Game]
 +
** '''object''' - N/A
 +
* '''OnGameInitializationFinished(Game)''' - 游戏模式初始化后开始调用。
 +
** '''Game''' - 参阅 [https://docs.bannerlordmodding.com/_csharp-api/core/game.html Game]
 +
* '''DoLoading(Game)''' - 不太确定,似乎是在加载结束时调用。
 +
** '''Game''' - 参阅 [https://docs.bannerlordmodding.com/_csharp-api/core/game.html Game]
 +
* '''OnNewGameCreated(Game, object)''' - 战役模式下开新存档时调用。
 +
** '''Game''' - 参阅 [https://docs.bannerlordmodding.com/_csharp-api/core/game.html Game]
 +
** '''object''' - N/A
 +
* '''OnMissionBehaviourInitialize(Mission)''' - 一旦一个任务开始并且行为初始化,就会被调用。
 +
** '''Mission''' - 参阅 [[Mission]]
 +
* '''OnGameEnd(Game)''' - 退出游戏/战役时调用。
 +
** '''Game''' - 参阅 [https://docs.bannerlordmodding.com/_csharp-api/core/game.html Game]
 +
* '''OnSubModuleUnloaded()''' - 完全退出游戏时调用。
 +
* '''OnMultiplayerGameStart(Game, object)''' - 多人游戏相关,尚未测试。
 +
** '''Game''' - 参阅 [https://docs.bannerlordmodding.com/_csharp-api/core/game.html Game]
 +
** '''object''' - N/A
 +
<br></big>

2020年4月25日 (六) 23:02的最新版本

访问源文档
返回目录

你可以通过继承 MBSubModuleBase 类来处理你的模组的加载,它本质上是你的代码入口。这里有几种有用的复写,例如你可以利用的 OnSubModuleLoad()OnApplicationTick()
不过需要注意的是,你必须在你的模组的 SubModule.xml 中引用这个类的完全限定名,才能够正常工作。
在示例 SubModule.xml 中,ExampleMod.MySubModule 是继承 MBSubModuleBase 的类的完全限定名。

复写

这是可用复写的完整列表,按它们(通常)调用的顺序排列。这是一个大概的指南,当你遇到执行顺序错误时不能用作debug的标准。

  • OnSubModuleLoad() - 在游戏首次加载时首先调用,这里应该是你的做初始设置的地方。
  • OnApplicationTick(float) - 这里每 Tick 调用一次,这里你应该避免做一些复杂的工作而着重考虑性能。
    • float - 毫秒为单位,去执行的时间
  • OnBeforeInitialModuleScreenSetAsRoot() - 主菜单出现前调用,如果你的模组有什么需要初始化的东西这会非常有用。
  • OnGameStart(Game, IGameStarter) - 主菜单选择游戏模式(子模组)后立即调用。
    • Game - 参阅 Game
    • IGameStarter - N/A
  • BeginGameStart(Game) - 加载选定的游戏模式(子模组)后立即调用。
  • OnGameLoaded(Game, object) - 加载存档后立即调用。
    • Game - 参阅 Game
    • object - N/A
  • OnCampaignStart(Game, object) - 游戏模式一开始立即调用。
    • Game - 参阅 Game
    • object - N/A
  • OnGameInitializationFinished(Game) - 游戏模式初始化后开始调用。
  • DoLoading(Game) - 不太确定,似乎是在加载结束时调用。
  • OnNewGameCreated(Game, object) - 战役模式下开新存档时调用。
    • Game - 参阅 Game
    • object - N/A
  • OnMissionBehaviourInitialize(Mission) - 一旦一个任务开始并且行为初始化,就会被调用。
  • OnGameEnd(Game) - 退出游戏/战役时调用。
  • OnSubModuleUnloaded() - 完全退出游戏时调用。
  • OnMultiplayerGameStart(Game, object) - 多人游戏相关,尚未测试。
    • Game - 参阅 Game
    • object - N/A