Unity将预制体渲染到RenderTexture上
Unity将预制体渲染到RenderTexture上
前言
本篇文章会介绍一个简单想法,所以会有很多限制。比如无法设置光源、对预制体中的物体位置有一定的要求和在使用Unity默认的URP材质有一些奇怪的bug。
环境
Windows11
Unity2022.3.56f1c1
正文
本篇文章的想法非常简单简单到我都觉得水的程度。我们只要使用Unity提供的CommandBuffer就可以实现了。首先我们先设定好摄像机。不过我们不是真的要创建一个Camera组件,而是我们设定一个虚拟的摄像机。这个摄像机的屏幕比就是我们要渲染的RenderTexture的长宽比。然后我们再定好摄像机是否要进行透视投影,如果是透视投影的话,fov(Field
of view)是多少。如果是
正交投影的话,它窗口的大小又要是多少等等。最终我们通过这些属性建立我们投影矩阵和视图矩阵。听到这,如果你不了解整体的渲染流程或许你会很懵逼。所以我这边提供给你一个简单方法。我们只需要拿一个空场景设定好这个空场景的中的摄像机参数,千万别忘记将Unity编辑器的 ...
关于图片采样
关于图片采样
前言
在游戏开发中,我们经常会对图片进行采样。比如物体的纹理信息,阴影贴图的信息等等。我们都需要对图片进行采样,以丰富游戏的表现。
我们时常会遇到这样的一个问题,我们需要将一个图片渲染到屏幕上,而图片所覆盖的屏幕像素远大于图片自身的像素。这时候我们就需要对图片进行放大处理。又或是反过来,我们需要对图片进行缩小处理。这些都会涉及到如何对图像本身进行采样。
图像采样的方法和规则
我们假设现在我们有一张256x256的图片。我们需要分别将其渲染成64x64和1024x1024的图片。对于64x64的处理,你或许会觉得很简单,因为256刚好是64的4倍,我们直接按照他们的比例进行像素的选取就好了。但是对于1024x1024的处理,你是否有想法呢?如果我需要的是100x100的图片,那么你又该如何处理呢?
无论是放大(上采样)还是缩小(下采样),我们都可以去做一个映射操作。比如我想知道64x64中坐标为(31,31)(这里我依照程序里面下标从0开始计算)的像素点是什么颜色。我先计算出此坐标在原图中的比例,显 ...
我对直播弹幕游戏的理解
我对直播弹幕游戏的理解
前言
我做直播弹幕类游戏也有一段时间了。这是一个刚刚兴起的游戏类型,我刚开始制作的时候还一头雾水,但现在我也有了一些自己的想法。我正好写一篇文章来阐述自己对于其的理解。下面文章中的大部分数据并没有实际考究,很多也是我从业以来的听闻,如果有错欢迎指正。本篇文章封面由豆包生成。
特别用标题来提醒,本篇文章充满作者个人想法请仔细甄别
对弹幕游戏的简单介绍
什么是直播弹幕游戏?
直播弹幕游戏,是一种以主播直播,观众通过向主播发送弹幕和送礼物的方式来进行游玩的游戏。直播弹幕游戏可以分为两大类:一类是玩家与主播之间的互动,另一类是玩家与玩家之间的互动,在直播平台中又被称为“弹幕互动类玩法”。
玩家与主播之间互动的弹幕游戏,通常是获取主播直播间弹幕和礼物信息转换为对应游戏内的指令。而这游戏本身可以是市场上已有的游戏。比如说,《超级马里奥》、《我的世界》、《黑神话:悟空》等。以《超级马里奥》为例,玩家可以发送弹幕或是送出礼物来对主播的操作进行干扰,从而让主播出洋相或是让其过不了关卡。本质上这属于是通过工具获取直播间信 ...
四元数学习记录
四元数学习记录
前言
如果你去看网络上的游戏开发教程,他们大都告诉你四元数是用来防止欧拉角的万向锁。但是他们都不会去深究或者说讲明。因为四元数确实很困难,但是在开发的过程中,我们确实需要一些关于四元数的知识来为我们的开发做理论基础。这篇文章,我只说明我自己所了解的部分,也算是我对于学习四元数的阶段总结。
特别说明,本文全部的计算都按照右手坐标系法则,所有的旋转都是逆时针旋转。
正文
四元数(Quaternion)是一种扩展复数的数学概念,它可以用来表三维空间中的旋转。它由威廉·罗恩·哈密顿于1843年提出,形式为:
\[q=a+bi+cj+dk\]
其中,\(a,b,c,d\)是实数。\(i,j,k\)是虚数单位,满足以下乘法规则:
\[i^2=j^2=k^2=ijk=-1\]
四元数的实部\(a\)、虚部为\(bi,cj,dk\),所以也有下面这样的表示:
\[q = (a,\vec{v})\]
其中,\(\vec{v}=(b,c,d)\)是三维向量(在我看到的资料中也有\(q =
(\vec{v},a)\)的表 ...
UGUI拖拽效果实现2
UGUI拖拽效果实现2
前言
之前我个人写过一个版本的拖拽效果实现,但是后面在一些场景中发现了一些问题,比如:应用窗口任意变换的时候,拖拽效果的设定显得麻烦,且会照成跟不上鼠标的问题;如果拖拽的物体本身的情况复杂,比如其锚点和其UI对齐格式奇葩或者其父节点也存在问题,那么判断是否在屏幕的方法就会错误,等等。
所以,为了解决这些问题,我又写了一个新的版本,这次我将会详细介绍一下这个版本的实现。
环境
Windows10操作系统 Unity2022.3.34f1c1 Unity UI 1.0.0
正文
这个版本的实现,仍然是基于UGUI本身提供的事件接口IBeginDragHandler、IDragHandler和IEndDragHandler。这次我还额外多加了IPointerDownHandler,这个接口。至于为什么我要多加这个接口,这个我在后面来说明。与前面的版本不同的是,这次的版本我并不考虑是否在屏幕外,我仅考虑UI是否在画布内。如果你要实现是否在屏幕内,其实就是将这个限制移动的画布设定为主画布就好了。 ...
Unity中广告牌效果实现
Unity中广告牌效果实现
前言
我并非没写过关于广告牌效果的文章,但是那时候我是在写《Unity
Shader入门精要》读书笔记的时候提过。那时候我不明白书中实现的原理,所以我就没给出具体的代码。现在我终于明白了一些便想着补上这个实现。
环境
Unity版本:2022.3.34f1c1
操作系统:Windows 10 Universal RP 14.0.8
广告牌的效果的原理
在了解原理之前,我们首先要了解一下什么是广告牌效果(Billboarding)。在《Real-Time
Rendering 4th Edition》中是这么描述它的:
1234原文:Orienting a textured rectangle based on the view direction is called billboarding, and the rectangle is called a billboard.As the view changes, the orientation of the recta ...
UnityRecorder导出带透明通道的视频和图片
UnityRecorder导出带透明通道的视频和图片
前言
工作久了总是会遇到些问题,比如策划有天突发奇想,想要录制游戏内东西给运营。但是他还想要带透明通道。而我们的项目又是使用URP渲染管线进行开发的,所以当使用Recorder这个插件时,它是导不出带透明通道的视频的和图片。虽然可以让美术用抠图的办法将我们想要的主体独立出来。但是简单的抠图效果并不算好,而好的效果费美术时间。这些都不如直接让Recorder导出带透明通道的图片和视频。
本篇文章仅说明URP和默认渲染管线下的实现效果。
环境
Unity版本:2022.3.34f1c1
Recorder版本:4.0.3
操作系统:Windows 10
Universal RP 14.0.8
具体操作
预准备
无论是导出视频还是导出图片,我们都要将Recorder输入源改为Texture Sampling。然后我们设定活动相机的参数。在默认渲染管线下,我们在相机组件中找到Clear Flags选项,将其设置为Solid Color,并在B ...
黑神话:悟空
黑神话:悟空
如果有人问2024年哪一款游戏可以在中国的游戏圈内被人津津乐道,那毫无疑问必然是《黑神话:悟空》。虽然它是作为“村子”里的第一位“大学生”,但是它仍然在商业上取得了极好的成绩。当然这些都不是我去玩《黑神话:悟空》的理由,我游玩它的理由只有一个:“我想当一次齐天大圣”。当我在2020年第一次看到《黑神话:悟空》的PV时,我就觉得我要玩它了。毕竟对于一个童年暑假必看86版西游的孩子而言,当齐天大圣,打妖魔鬼怪便是梦想中的场景。若是在路边捡起棍棒定要带回家中,在家长面前挥舞,并发声大喊:“看我,齐天大圣在此。”,直到家长厌烦起身要打才肯作罢。所以我没有理由犹豫和拒绝去玩这样一款制作精良的游戏。虽然在卖它前,我还是很害怕被它有着诸多的问题。但是他的PV和在发售前的游戏Up的测评还是让我决定买下电子豪华版《黑神话:悟空》(实在是囊中羞涩卖不起实体《黑神话:悟空》)。
因为游戏中带个“黑”字,所以我一开始就认为《黑神话:悟空》中的剧情是对《西游记》本身一些剧情黑暗解读。当然游戏确实是以一种较为黑暗的方式来阐述《西游记》中的世界观,不过借鉴的东西不仅 ...
最近的总结2024-10
最近的总结2024-10
工作
工作上,对我而言10月是一个浑浑噩噩的一个月份。我总是定下一个目标然后自己再打乱这份节奏,就像本应该是10月初完成的9月份总结直到10月底我才写完。我总是害怕自己完不成主管定下来的目标,而变得有些烦躁。时不时的还有其他项目插入“抢夺”我项目的美术资源,导致了我大多数时候明明有时间但是没法做东西。对此我到是觉得不愉快,但是想到我们本就是一个小团队又觉得很无奈。
现在这个环境对于美术的要求是越来越高了,诚然好的游戏不一定需要很好的美术。但是在玩法做不到创新的前提下,卷美术反而是一种“投机取巧”的好方式。而我项目便是如此,至少在当初定下它时,主管便是说:“我们这款美术表现必定是很强的,要让人有一种眼前一亮的感觉。”实在是当初定下来的目标太高了,所以导致了现在美术资源跟进的缓慢。而我个人认为现在项目所表现出来的效果并不能达到让人眼前一亮的效果。归根结底,我总结出来了两个原因。第一个是因为我技术还是不行,至少我还是不能完全实现策划的要求。第二个原因就是给美术的时间太少了。我对此十分郁闷,我总是感觉自己做出来的作品有着这样或是那样的 ...
关于UnityShader实例化那些事
关于UnityShader实例化那些事
概述
本篇文章会介绍内置渲染管线和URP渲染管线下,Unity
Shader如何实现实例化和实例化时的一些细节。注意本文不对单通道渲染的实例化、粒子的实例化和Dots实例化做过多的说明,只会简单提及。
环境
Windows10
Unity2022.3.34f1c1
Universal RP 14.0.11
内置渲染管线
简单shader实现实例化
Unity官方文档中是有具体的例子的。文档地址:实例化简单实现。这里我直接将源码贴进来,方便我自己解释。虽然官方文档中已经对实例化的参数进行了详细的说明,但是我觉得既然自己去写文章了,那就自己再记录一下。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455Shader "Custom/SimplestInstancedShader"{ Pro ...








