Unity打包后窗户化切换
打包后窗口化切换常见的电脑游戏基本上都存在着将游戏在窗口化和全屏 模式之间进行切换的功能,全屏模式有助于提高沉浸感,窗口化则是可以拥有一个可视化关闭游戏程序的快捷键
使用命令1Screen.fullScreen = !Screen.fullScreen;
以上是让打包后的游戏在全屏和窗口化之间来回切换的简单代码
InputSystem按键重绑定
InputSystem按键重绑定参考教程【unity小技巧】新输入系统InputSystem重新绑定控制按键(最全最完美解决方案)_unity input system-CSDN博客
action的binding索引
一个action下存在多个binding的情况下,如果想要通过所以来获取到binding对象,以上是它们的索引,从0开始,依次递增
索引获取在InputSystem官方给出的Samples中,可以通过预先设置的 binding 和代码来获取到指定binding的有效索引
属性定义
12[SerializeField]private string m_BindingId;
获取索引
1234567891011121314151617181920212223242526272829/// <summary>/// Return the action and binding index for the binding that is targeted by the component/// according to/// </summary>/// & ...
Unity —— 2D,雨水
Unity2D雨水描述通过Unity自带的粒子系统在场景中快速构建一个视觉效果客观的2D雨水效果
组件创建
不同工程中对于材质Material的引用是不同的,建议还是要在该窗口中找到上图所示的内容并进行创建
自行创建空对象并添加Patricle System的话可能出现 图形发紫 的情况,一般是渲染错误
下面暂且展示在Unity 2D渲染光照 粒子系统自带的材质Material
生成区域
拉伸效果使用Renderer比较重要的是粒子的拉伸
将Render Mode设置为图中所示,可以实现粒子随速度方向拉伸的效果,具体表现可以随着左侧框中的三个属性进行调整
这样在启动collision功能的时候,雨水被弹开后会有比较好的效果
效果图
不使用Renderer在粒子系统的第一个属性中,也可以调整出雨水拉伸效果,在不知道使用Renderer的时候非常具有迷惑性
这种调整实际上是一种硬拉伸,雨水粒子触碰到地面后拉伸方向不会改变
效果图最后效果类似于Rigidbody锁定Y轴旋转,雨水落到地面上没有一个好的喷溅效果
重力在粒子系统的第一栏,使用重力
反之,如果不使用重力,雨水碰到地面后 ...
C++ 事件系统使用手册
C++ 事件系统使用手册概述本手册提供了 C++ 事件系统的使用指南。事件系统允许对象订阅和接收特定类型的事件通知,从而实现对象之间的解耦。本系统基于 EventManager模块、GameEvent模块 Delegate 模块,支持使用 lambda 表达式来封装事件处理函数。
环境配置在使用事件系统之前,请确保以下依赖库已正确配置:
EventManager.h: 事件管理器头文件,包含事件注册、发送和注销等功能。
iostream: 输入输出流库,用于示例中的打印操作。
基本概念
事件 (Event): 代表发生的事情,可以被订阅和触发。
委托 (Delegate): 用于封装事件处理函数,可以是 lambda 表达式、函数指针或函数对象。
使用步骤1. 定义事件处理函数事件处理函数应该接受一个事件对象作为参数,并执行相应的操作。
1234void Func(MyEvent* a){ std::cout << "TEST1" << a->message << std::endl;}
2 ...
游戏事件池实现解释文档
游戏事件池实现解释文档概述本文件提供了一个基于对象池的游戏事件池的实现。它包括一个模板类 GameEventPool 用于管理事件对象,以及一个抽象基类 GameEventBase 和一个模板类 GameEvent 用于定义和创建具体的游戏事件。
头文件123#include <stack>#include <unordered_set>#include <string>
<stack>: 提供了栈数据结构,用于存储事件对象。
<unordered_set>: 提供了哈希集合数据结构,用于快速查找和确保对象唯一性。
<string>: 提供了字符串类,用于存储事件信息。
GameEventPool 类模板成员函数Push(T* item)
将一个事件对象推入池中。如果对象已存在,则不重复添加。
Get()
从池中获取一个事件对象。如果池为空,则创建一个新的对象实例。
私有成员函数Init(T* item)
初始化事件对象。
静态成员变量
_pool: 存储事件对象的栈。
_poolSet: 存储事件对象 ...
EventManager 和 EventCallbackList 类解释文档
EventManager 和 EventCallbackList 类解释文档概述该文档描述了 EventManager 和 EventCallbackList 类,它们共同构成了一个游戏事件的分级广播管理系统。该系统允许注册、注销和触发事件,每个事件可以有不同的优先级。
头文件12345#include <vector>#include <functional>#include <unordered_map>#include "GameEvent.h"#include "Delegate.h"
<vector>: 用于存储回调列表。
<functional>: 提供了 std::function。
<unordered_map>: 用于快速查找事件信息。
"GameEvent.h": 包含游戏事件基类定义。
"Delegate.h": 包含委托类定义。
常量定义1const int MAX_PRIORITY_COUNT = 11; ...
Delegate 类模板解释文档
Delegate 类模板解释文档概述Delegate 类模板是一个单播委托类,它封装了 C++ 的可变参数模板和 std::function,用于存储和调用具有任意数量参数的方法,但仅支持返回值为 void 类型的方法。委托类可以看作是函数指针的一个更灵活的替代品,它允许存储和调用任何可调用的目标(如函数、lambda 表达式、函数对象等)。
头文件12#include <functional>#include <stdexcept>
<functional>: 提供了 std::function,用于封装函数对象。
<stdexcept>: 提供了标准异常类,如 std::runtime_error。
类定义成员类型别名1using FunctionType = std::function<void(Args...)>;
FunctionType: 类型别名,用于表示可以接受任意数量参数并返回 void 的函数类型。
构造函数123Delegate(int hashCode);Delegate();Delegat ...
Unity —— 2D,glow效果
2DGlow效果让2D图片固定部分呈现出发光效果
工程准备按照以下链接所示准备一个使用2D灯光的工程,即2Durp
Unity —— 2D渲染光照迁移 | mao的博客
不过对于配置文件需要额外勾选 Dept Texture这一个选项
Shader准备使用到2Durp渲染管线,光照大部分被替换为 2D-lit,此时手写Unit Shader可能不能达到预期的效果,因此使用ShaderGraph
具体Shader实现如下图所示
每一方块对应的是在 Shader 中 的代码操作
注意
需要在ShaderGraph中准备一个主贴图,名称应该是MainTex,按照普通Shader文件的代码编写方式,需要有下划线_,来作为属性在shader中的引用
这Unity2021lts版本中,创建和修改对着两个属性的修改是自动进行的
Shader准备完成后,新建一个Material来承载即可,具体步骤和一般的Material和Shader对应没有差别
素材准备将素材中不需要发光的部分涂黑即可
简单呈现效果
实际上最终不必要是下半黑色,因为素材的关系这里才是这样
教程链接
https://ww ...
Unity —— 2D渲染光照迁移
2D光照渲染迁移本篇文章大体内容是通过Unity2D 核心渲染模板来将项目加载到2D光照渲染下
项目创建提示
文章使用功能的Unity版本是2021 lts
选用2D核心模板
package导入
配置文件创建经历完以上步骤后,在Assets的新建面板上才会有Rendering的选项
按照按照以下步骤进行配置文件创建
最后会出现两个配置文件,具体做什么不需要去管,两个配置文件的联系在上一步的操作中已经被建立
更改项目配置进入到Project Settings中更改配置
补充该窗口通过Unity编辑器左上角开始第二个选项 Edit 进入
结果验证以上步骤操作正确后,在创建中新建一个2DSprite,对应的配置如如下图所示即为正确
相应的,灯光也要使用2D的,即如下图所示的内容
成果示意
因为项目从一开始就是从零开始创建,不确定下面博客中最后的升级场景素材是否需要
Unity-2D光源使用讲解_unity2d光源-CSDN博客
同时,对应位置的升级素材选项在本文章使用的版本中也不可见
Pixiv的作品id使用
图片id使用https://www.pixiv.net/artworks/
在以上网址的后面加上作品id即可