编写代码
本章介绍如何查看并编写代码。
添加游戏源码到VSCode
在VSCode的顶部菜单点击“文件 -> 将文件夹添加到工作区”,选择我们的游戏项目目录,例如“D:\steel-projects\ball”。在src目录下,可以看到我们的lib.rs文件内容如下:
use steel::app::{App, SteelApp};
#[no_mangle]
pub fn create() -> Box<dyn App> {
SteelApp::new().boxed()
}
目前只有一个create函数,返回类型是Box<dyn App>。函数中只有一行代码,返回了一个由Box装着的SteelApp结构。请不要修改create函数的函数名和返回值类型,因为编辑器需要在动态加载游戏代码后调用create函数生成一个App对象,如果你修改了create函数的函数名或返回值类型,会导致编辑器找不到create函数而崩溃。
SteelApp介绍
在Steel引擎中,我们使用SteelApp为ecs世界中添加/注册实体(Entity),组件(Component),单例(Unique)和系统(System),来构建我们的游戏程序内容。
例如写一个在游戏开始的时候运行的hello_world系统:
use steel::app::{App, SteelApp, Schedule};
#[no_mangle]
pub fn create() -> Box<dyn App> {
SteelApp::new()
.add_system(Schedule::Init, hello_world)
.boxed()
}
fn hello_world() {
log::info!("Hello world!");
}
完成代码修改后,需要重新编译一下,才能将修改同步到编辑器中。回到Steel编辑器界面,点击顶部菜单的“Project -> Compile”按钮即可发起编译,控制台中输出“Project::compile end”就说明编译成功完成了。编译完成后你应该还可以在控制台中看到“Hello world!”的输出,说明系统运行成功。
添加Physics2DPlugin插件
因为我们的接球游戏需要使用2D物理引擎,在代码中添加Physics2DPlugin插件吧:
use steel::{
app::{App, SteelApp},
physics2d::Physics2DPlugin,
};
#[no_mangle]
pub fn create() -> Box<dyn App> {
SteelApp::new()
.add_plugin(Physics2DPlugin)
.boxed()
}
插件(Plugins)是许多组件、单例和系统的集合,可以一次性添加一整个游戏模块所需的所有内容进来。插件使得Steel引擎是模块化的,你可以方便的添加别人写的任意模块,你也可以写一个Steel引擎模块提供给其他人使用。Physics2DPlugin就是一个提供了2D物理引擎所需的所有内容的插件。
完成代码修改后,记得回到Steel编辑器界面,点击顶部菜单的“Project -> Compile”按钮发起编译。
注意:由于代码中需要的use语句较多,本教程后续不再展示use语句的修改,你可以参考examples/ball/src/lib.rs中的use语句添加,或者直接复制其所有use语句即可。