自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 如何使用Rust写一个游戏引擎

Steel游戏引擎是我为了学习Rust语言和Vulkan渲染而写的。开源:Steel游戏引擎是完全开源的,如果有需要可以方便的修改引擎层代码。简单:游戏引擎是十分复杂的,为了使用最简单的方法写一个游戏引擎,Steel使用Rust中广泛使用的开源库。游戏开发常用的ECS架构和ui等都有现成的开源库可以直接使用,因此Steel可以专注于实现编辑器功能和渲染效果。模块化:为了确保实现简单,Steel只实现必须的游戏核心模块,例如ui,input,渲染和物理引擎等。其它模块可以以插件的形式添加。

2024-07-26 11:40:16 800

原创 安卓Canvas梳理

安卓中Canvas是用来绘制图像的常用api。Canvas在java,hwui和skia中都有定义。

2024-07-25 14:51:08 958 1

原创 安卓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:54:37 692

原创 Steel教程 - 推一下球

目前我们的球在游戏开始运行后受重力而自由落体,这实在是太慢了,玩家可以轻松的接住球。本章我们给球一个初速度来增加一点游戏难度。

2024-05-24 16:53:16 363

原创 Steel教程 - 玩家控制

本章我们来编写板子的控制逻辑。

2024-05-24 16:52:14 668

原创 Steel教程 - 编写代码

在Steel引擎中,我们使用SteelApp为ecs世界中添加/注册实体(Entity),组件(Component),单例(Unique)和系统(System),来构建我们的游戏程序内容。");完成代码修改后,需要重新编译一下,才能将修改同步到编辑器中。回到Steel编辑器界面,点击顶部菜单的“Project -> Compile”按钮即可发起编译,控制台中输出“Project::compile end”就说明编译成功完成了。

2024-05-24 16:51:16 798

原创 Steel教程 - 场景搭建

本章我们将搭建接球游戏的场景。

2024-05-24 16:50:07 624

原创 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

1

2021-08-05 19:08:22 1735

原创 录屏流程 - 安卓R

1

2021-08-05 19:07:57 2060

原创 安卓实现录屏app

1

2021-08-05 19:07:08 1103

原创 SystemUI与StatusBar - 安卓R

1

2021-08-05 19:05:23 414

原创 keyguard的occluded变化流程 - 安卓R

1

2021-08-05 19:04:55 2352 1

原创 KeyCode定义 - 安卓R

1

2021-08-05 19:04:25 591

原创 SystemUI的Plugin - 安卓R

1

2021-08-04 10:24:05 2954

原创 圆角绘制 - 安卓R

1

2021-08-04 10:22:46 1028

原创 上滑解锁流程 - 安卓R

1

2021-08-04 10:21:55 2281

原创 Insets动画 - 安卓R

1

2021-08-04 10:21:12 2179 1

原创 SleepToken机制 - 安卓R

1

2021-08-04 10:20:45 1282

原创 亮屏流程 - 安卓R

1

2021-08-04 10:20:10 900

原创 灭屏流程 - 安卓R

1

2021-08-04 10:19:37 954

原创 安卓动画系统 - 安卓R

1

2021-08-04 10:19:10 1499

原创 转屏动画 - 安卓R

1

2021-08-04 10:18:38 1153

原创 过渡动画 - 安卓R

1

2021-08-04 10:18:08 2443 2

原创 dumpsys原理 - 安卓R

1

2021-08-03 11:09:46 276

原创 Binder和ServiceManager - 安卓R

1

2021-08-03 11:09:13 419

原创 拖拽分享 - 安卓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

原创 放大功能 - 安卓R

1

2021-08-03 11:07:48 961

原创 窗口布局流程 - 安卓R

1

2021-08-03 11:07:23 859

原创 Activity显示流程 - 安卓R

1

2021-08-03 10:27:39 375 1

原创 SurfaceFlinger中Layer的修改 - 安卓R

1

2021-08-03 10:26:49 4856 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除