- 博客(74)
- 收藏
- 关注
原创 如何使用Rust写一个游戏引擎
Steel游戏引擎是我为了学习Rust语言和Vulkan渲染而写的。开源:Steel游戏引擎是完全开源的,如果有需要可以方便的修改引擎层代码。简单:游戏引擎是十分复杂的,为了使用最简单的方法写一个游戏引擎,Steel使用Rust中广泛使用的开源库。游戏开发常用的ECS架构和ui等都有现成的开源库可以直接使用,因此Steel可以专注于实现编辑器功能和渲染效果。模块化:为了确保实现简单,Steel只实现必须的游戏核心模块,例如ui,input,渲染和物理引擎等。其它模块可以以插件的形式添加。
2024-07-26 11:40:16
800
原创 安卓RenderEffect原理
安卓的RenderEffect可以给View添加一些渲染特效,例如模糊效果等。RenderEffect定义:(frameworks/base/graphics/java/android/graphics/RenderEffect.java)RenderEffect只有一个成员变量mNativeRenderEffect,保存了一个C++层的指针。所以RenderEffect的实现原理基本在C++层。接下来本文以给View添加模糊效果为例分析RenderEffect的原理。
2024-07-25 14:39:28
972
原创 安卓Winscope原理
谷歌介绍文档:https://source.android.com/docs/core/graphics/tracing-win-transitions谷歌文档说“跟踪记录会被写入/data/misc/wmtrace/wm_trace.winscope和/data/misc/wmtrace/layers_trace.winscope,同时还会包含在错误报告中。本文分析安卓抓取Winscope代码流程。
2024-07-25 11:32:46
787
原创 Steel教程 - 目录
Steel教程 - 目录1 引言2 运行Steel编辑器3 创建项目4 场景搭建5 实现Engine6 玩家控制7 推一下球8 游戏失败9 主菜单
2024-05-24 16:56:25
303
原创 Steel教程 - 主菜单
通常游戏都会有一个主菜单,我们可以从主菜单开始游戏,游戏失败后回到主菜单,我们可以重新开始游戏。本章我们在Ball游戏中实现一个简单的主菜单。
2024-05-24 16:56:01
584
原创 Steel教程 - 推一下球
目前我们的球在游戏开始运行后受重力而自由落体,这实在是太慢了,玩家可以轻松的接住球。本章我们给球一个初速度来增加一点游戏难度。
2024-05-24 16:53:16
363
原创 Steel教程 - 编写代码
在Steel引擎中,我们使用SteelApp为ecs世界中添加/注册实体(Entity),组件(Component),单例(Unique)和系统(System),来构建我们的游戏程序内容。");完成代码修改后,需要重新编译一下,才能将修改同步到编辑器中。回到Steel编辑器界面,点击顶部菜单的“Project -> Compile”按钮即可发起编译,控制台中输出“Project::compile end”就说明编译成功完成了。
2024-05-24 16:51:16
798
原创 Steel教程 - 创建项目
点击编辑器顶部菜单中的“Project -> Open”按钮,你可以看到“Open Project”对话框。然后点击“Browse”按钮为接球游戏项目选择一个文件夹,例如“D:\steel-projects\ball”。当看到“Project::compile end”时,表示项目已经编译成功。本章我们创建我们的接球游戏项目。
2024-05-24 16:46:49
393
原创 Steel教程 - 运行Steel编辑器
成功运行Steel编辑器后,你可以看到如下界面:整个界面的前面是编辑器窗口,在编辑器窗口中有顶部菜单功能按钮,和多个子页面。Scene:场景窗口,这个窗口用于查看场景内容;Game:游戏窗口,这个窗口用于查看实际游戏画面;Entities:显示当前场景所有的实体(Entity);Entity:显示当前选中的实体的所有组件(Component);Uniques:显示当前场景所有的单例(Unique);Unique:显示当前选中的单例的内容。编辑器窗口的后面是VSCode窗口。
2024-05-24 16:42:07
564
原创 Steel教程 - 引言
本教程使用Steel编辑器逐步构建一个简单的接球游戏,来带领用户了解学习使用Steel引擎。在这个教程游戏中,用户控制球板左右移动,接住在墙上来回反弹的球,如果球掉落到了球板下面,则游戏失败。使用Steel编辑器创建项目;添加或删除实体和组件;游戏场景搭建与切换;利用物理引擎控制物体行为;编写系统实现游戏逻辑;编写游戏菜单。
2024-05-24 16:38:51
379
原创 安卓实现笔记本app
简介本文实现一个简单的笔记本app,每个笔记有标题和内容,记事本首页可以浏览有哪些笔记和添加笔记,笔记详情页可以编辑删除笔记。本app使用Compose + ViewModel + Room实现,阅读此文前可以先去了解这几个框架。由于使用了这些框架,我们只需不到300行代码即可实现我们的记事本app。整个app结构如下:Compose - Activity - ViewModel - Repository - RoomDatabase数据库首先使用room来定义我们的数据库。我们只需要存储笔记
2022-04-08 15:27:53
4144
原创 安卓实现浏览器app
安卓给app提供了:WebView:可以显示网页的组件,详见谷歌WebView文档借助安卓的WebView,我们可以轻松的实现一个浏览器app。首先来看我们的布局文件activity_web.xml:<?xml version="1.0" encoding="utf-8"?><androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/re
2022-03-28 16:44:27
1690
原创 安卓实现播放器app
安卓给app提供了:MediaPlayer:播放视频或音频功能,详见谷歌MediaPlayer文档借助MediaPlayer,我们可以轻松的实现一个简单的播放器app。一般来说app显示内容放在Activity中。但是试想一般的播放器要求app进入后台后可以继续播放声音,app回到前台后可以继续播放视频。因此其实MediaPlayer更适合放在Service中来播放视频,而我们的Activity仅显示视频即可。接下来我们依次实现MediaService和MediaActivity。首先实现我们的核心类
2022-03-28 16:16:11
855
原创 拖拽分享 - 安卓R
这里以两个ImageView为例,实现从一个ImageView将图片拖拽到另一个ImageView的功能这里有两个重要的方法:1 getFileUri:构建图像的uri2 setUpDraggableImage:让imageView可以响应长按并开始拖拽接下来分别介绍这两个方法。getFileUri方法如下:这个方法首先将图像保存到文件中,再通过FileProvider生成其uri,其中FileProvider需要在AndroidManifest.xml中注册:其中@xml/file_paths是re
2021-08-03 11:08:20
809
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人