English version at Readme.en.md
Github Repository (source): https://github.com/Saplonily/Salix
Gitee Repository: https://gitee.com/Saplonily/Salix
警告: 个人学习项目, 可能包含大量 TODO 和 Bug.
Salix 是一个聚焦于 2d 游戏的基于 .NET standard 2.0/2.1
及 .NET 6,7,8
简易框架.
Salix 目前只实现了 Win32
平台上的 OpenGL
渲染后端, 不过这会随着项目的推进而增加.
注意的是, 目前项目依然处在极早期的开发之中, 随时都会产生破坏性更改.
以下内容只确保完全兼容 Commit 08256f6
时的仓库, 不过较多情况下你可以相信它们, 因为在做出一个破坏性更改的同时我通常会更改这部分的内容.
嗯, 这部分东西属于是老生常谈了, 不过这里我不会赘述, 你应该只需要打开项目, 新建一个控制台项目, 目标框架我会推荐 .NET 8
, 然后引用 Salix
项目就行了.
这一步很简单, 在你的 Main
方法中加入如下代码:
Game game = new();
game.Run();
然后启动, 你应该会看到一个黑色的窗口, 标题为 'Salix', 但是什么也没有. 不过这代表你成功的启动了项目!
现在, 将你实例化的 Game
类换为一个继承于 Game
的类:
public class MyGame : Game
{
}
MyGame game = new();
game.Run();
然后来充实一下我们的 MyMainWindow
:
public class MyGame : Game
{
private Texture2D tex;
private SpriteBatch spriteBatch;
public MyGame()
{
tex = ResourceLoader.LoadTexture2D("TestAssets/665x680.png");
spriteBatch = new SpriteBatch(this);
}
public override void Render()
{
RenderContext.Clear(Color.Known.CornflowerBlue);
spriteBatch.DrawTexture(tex, DrawTransform.None);
spriteBatch.Flush();
}
}
首先, 确保你有一个用来渲染的贴图, 当然你不想找的话你可以用 Test.Win32
项目里测试使用的一张 665x680 大小的贴图: Test.Win32/TestAssets/665x680.png.
然后我们来看看上述的代码干了些什么:
- 首先我们在
MyGame
的构造器里通过ResourceLoader
获取了一个资源加载器加载了一张贴图. - 然后再使用当前游戏创建了一个
SpriteBatch
, 我们将会用它来渲染我们的贴图. (如果你曾经写过 XNA 代码的话, 你可能会觉得眼熟, 这确实!) - 最后, 在渲染循环中我们使用
SpriteBatch
绘制我们的贴图, 指定在窗口的左上角, 然后Flush
它, 注意我们必须记得在渲染循环末尾调用这个方法, 否则我们的绘图指令可能会被推迟到下一帧造成不预想的结果.
(目前正在尝试解除这个限制, 现在实际上你就无需在视口更改和渲染结束时调用 Flush
了, 但是依然在渲染上下文的着色器更改时不会)
hm, 至此那么这个简单的使用说明就结束了, 可是为什么它这么短? 因为我懒 XD.
目前其实它还支持文本渲染和简单的键盘输入, 这部分你可以在 Test.Win32
项目里找到测试用例.