UnityAB包学习笔记扩展
UnityAB包学习笔记扩展
前言
我之前有写一篇关于UnityAB包学习的笔记。在这篇笔记中,我额外安装了Asset Bundle Browser1.7.0。这个Unity官方在最近几年都没有更新了,我想大概率是Unity官方想推AA包吧。所以AB包的API其实没有太多的修改,因此之前笔记应该还没有过时。故,我并不想再多赘述一次,如果你没有关于使用AB包的经验,你可以先去看之前我写的笔记,然后再来看这篇文章。
因为本人并没有参与过什么大型项目的游戏开发,因此下文的代码只是我个人的钻研。但是下文的代码还是有跑过项目的。只是这些项目几乎只有加载包中资源而没有卸载包资源的情况。
环境
Windows10操作系统
Unity 2022.3.8f1c1
Asset Bundle Browser1.7.0
加载依赖
AB包之间是存在依赖的情况,如果我们想正确加载一个包中的资源,那么我们要先将这个包所依赖的包加入其中。一般而言,我们只要能获取到AssetBundleManifest这个类型的变量,我们就可以获 ...
2024.7.26有感而发
我本来是不打算写这篇文章,但心里总是想着这事,所以还是写一下吧。
最近有些迷茫,我不知道怎么去提升自己。看着网络上大几百的教程,我又怕这教程没什么用。我愈发的迷茫,但我又不知道该怎么办。
我现在待在这个公司也一年多了,不出什么意外,我大概今年就在这家公司过去了。几个月前我和同事一起做出了个日流水能达到10万的游戏。年前领导发出豪言壮语想要做一款手机游戏出来,我本以为这个游戏能变为我们做手游的契机。可惜现在每天就几百块的流水,聚道分成后到我们手里也才十几块。他现在也只能继续做着我们现在的项目,并想找出一缕希望的曙光。随着我继续待在这个项目组里,我也明白除非有什么天大的机遇,否则项目组最多也只能养活自己。大家并没有什么太强的技术,说白了就是大家都菜。我们没有什么能力整出足够吸引他人眼球的效果,而在现在的风气中,这无疑就是在说自己没有赚钱的能力。我很想帮团队做出他想要的项目,但我真的菜,我做不到。我不禁怀疑自己是否是做游戏的这块料。
巧的是,刚好这时候前同事找我寒暄了一下。或许他也有些郁闷了吧。在对话中,我了解到他又换了一 ...
自己学习Protobuf的整理
自己学习Protobuf的整理
前言
本篇文章是我自己在学习Protobuf时做的整理。如有错误,还望告知,谢谢。
环境
Windows10
Unity2022.3.8f1c1 il2Cpp .Net FrameWork
Google.Protobuf 3.27.1
Protobuf文件写法的简单说明
下列说明以protobuf
csharp教程中的内容为例子说明。
我们创建一个以.proto为后缀名的文件。并填入以下示例内容:
1234syntax = "proto3";package tutorial;import "google/protobuf/timestamp.proto";
所有的Protobuf文件都以syntax作为开头。syntax关键字用于指定.proto文件所使用的Protobuf语法版本。现在支持proto2和proto3。proto2和proto3之间有一些区别,但是因为我项目使用的是proto3,所以下文大多以proto3 ...
Unity中使用URP实现屏幕空间下贴花渲染
Unity中使用URP实现屏幕空间下贴花渲染
前言
最近我在研究贴花(Decal)效果的实现。但是网上的文章我看得云里雾里。最终我看了网上的一部分的文章,加上我自己的思索后,我才搞懂如何去实现。所以这里我写这篇文章做一个笔记,也是为了防止我自己忘记如何实现。这里我还要说明一下,文章链接里的文章少,是因为当我想要写这篇文章的时候,大多数我看过的文章已经找不到了。
环境
Unity2022.3.8f1c1
Windows10
Universal RP 14.0.8
屏幕空间贴花(Screen Space
Decals,SSD)
屏幕空间贴花(ScreenSpace
Decal)是一种在游戏和图形渲染中常用的技术,它允许开发者在物体表面上动态添加图案或纹理,而无需改变原始模型的几何结构。这种技术在现代游戏中非常常见,用于实现各种视觉效果,如涂鸦、弹孔、纹身等。以上来自文言一心(百度AI)的介绍。
过程
我们使用立方体框选出一个区域。在我们限定的区域内,我们对深度图进行采样得到区域内的深度信息。然后 ...
崩溃大陆
崩溃大陆
我是什么时候开始玩《崩溃大陆》的,我自己已经记不得了。我仅知道那是一段还算欢乐的时光。那时候大家一起躲在床里在手机上联机玩着盗版的《我的世界》和《泰拉瑞亚》。而《崩溃大陆》,则是我在玩这些游戏后被朋友推荐而游玩的游戏。因为那时我还是学生,所以我玩得都是盗版。也正因为我是学生,所以我并没有足够的时间去通关《崩溃大陆》。但我仍然喜欢这个游戏,直到今天我百度账号的头像仍然是我玩《崩溃大陆》时的截图。
时过境迁,当初一起玩游戏的朋友已经聚不起来了。不在一起上学便没有一起游玩的理由,久而久之便没了联络。随着我长大,《我的世界》现在已经由网易代理变成了免费游戏。我工作不久后便在Stream和TapTap上购买了电脑和手机端的《泰拉瑞亚》。本来我是想在电脑端上重现我之前的“辉煌”,可是我不习惯电脑端的操作,随后我便在TapTap上买了手机端的。但毕竟我早已和朋友打过了某影之地,我也通过其他人的存档见识了《泰拉瑞亚》(有一说一,它难度太高了。这也是我不玩的原因之一)的一切。最主要的还是,那些与我一起联机的朋友再也聚不起来了。
偶然的一 ...
《排球少年垃圾场对决》观后感
《排球少年垃圾场对决》观后感
其实我并没有看过《排球少年!!》,也不知道任何的关于排球的规则。所以我本来是不想去看的。但是因为朋友再三推荐和其他的原因,我去看了这场电影。
整体而言,我觉得这是一个不错的电影。即使我事先不知道他们之间任何的关系,但是随着电影节奏的进行,我也能好好的理清个个人物之间的关系(这好像是一部电影的基本吧)。我全程看下来毫无尿点,整体就是围绕着乌野和音速两个队伍的比赛和队员间的情谊展开。青春、热血、王道,我认为这些标签都可以放到这部作品中。
我现在回想起来,我突然发现我已经很久没有看过这样王道的剧情了。到不是因为现在没有那么好的番剧,而是我故意不去看这样的剧情。因为当我每次去想到主角努力就有超额的回报或是主角经过几个月的修炼就可以达到Boss差不多的高度,我都会觉得扯。因为我自己步入社会就知道努力都不一定会有等额的回报,而我自己也不算有天赋也不可能几个月修炼就可以达到大佬一样的高度。总而言之就是我已经不觉得自己是主角了。在这样的剧中,我觉得我没办法把自己代入主角,就算我在其中我也只不过是主角一个过客罢了。所以当 ...
Unity在Windows操作系统下使用加载和存储文件的对话框
Unity在Windows操作系统下使用保存和打开文件的对话框
前言
这里我仅说明使用CSharp的情况。其实网上已经有很多类似的文章,你在网上搜便能找到一堆。下面的代码其实也是我从网络上抄过来的。但是大多数的文章就仅仅是给代码然后不说为什么这样。如果只是满足当前的需求,那这样做也没什么问题。只是当这些代码出现了一些问题,或者突然有些需求要进行扩展的时候,这些如同黑盒子一样的代码就显得麻烦了。
因为我很懒,所以我这里的代码说明也只到我现在使用的程度。
环境
Windows10
Unity 2022.3.8f1c1
正文
要想在Windows操作系统下打开其保存和打开文件的对话框,我们必须要使用其Comdlg32.dll。如果你有搜索并看过这些方面的文章。你会发现文章中都会预先让你声明一个结构体:
123456789101112131415161718192021222324252627[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] ...
TextMeshPro(Unity)实现复合Emoji
TextMeshPro(Unity)实现组合后的Emoji
前言
本文整体思想就是遍历字符串找出组合后的Emoji信息并将其重新赋值于TextMeshPro。这样做固然可以满足复合Emoji显示的需求,但是这样同样会照成额外的开销。如果要更好的性能,那么只能自己写一份图文混排的组件或是以某种方法修改TextMeshPro的文本处理使其可以直接支持。
如果你不知道如何在TextMeshPro中显示Emoji(非组合),你可以去看一下这篇文章:Unity中使用TextMeshPro打出Emoji表情。不过这篇文章中的TextMeshPro是预实验的版本。如果你不行使用预实验的版本,那么你可以看完上面的文章后再看一下这篇文章:Unity使用TextMeshPro加载Emoji。
环境
Windows10
com.unity.textmeshpro 3.0.9
Unity 2022.3.8f1c1
实现代码
123456789101112131415161718192021222324252627282930313233343536373839 ...
关于深度图的那些事
关于深度图的那些事
在图形学中,深度图(Depth
Map)通常存储的是相机坐标系(视图空间)下的深度值。其可以用来表示场景中物体的远近关系。一般而言,在引擎中深度图都需要我们手动开启,毕竟这是一个消耗性能的操作。且半透明物体一般是不做深度写入的。这也就是说深度图中并不存在半透明物体的信息。
深度图的存储格式
使用RGBA8格式的R通道来存储。
兼容性(优):RGBA8格式可以兼容所有设备。
数值精度(差):RGBA8格式中每个通道可以表示的浮点数精度为1/255,约等于
0.0039。在使用深度图进行深度深度判定时可能会因精度不够而导致出现较大误差。
存取效率(优):直接存取,无额外运算。
PS:如果我没有记错的话,Unity通用渲染管线的深度图就是用这个方式存储的。
用RGBA8格式进行编码
虽然这个方案也是使用RGBA8,但是此方案是将深度信息编码到RGBA8的四个通道中,使用时再用与编码对等的解码方式进行解码。
兼容性(优):RGBA8格式可以兼容所有设备。
数值精度(优):其可以达到32位浮点数 ...
半透明物体与非透明物体接缝柔和处理
半透明物体与非透明物体接缝柔和处理
前言
最近项目中遇到特效和地面的接触的时候,他们的接触面间有着一条很明显的接缝。当镜头拉进的时候这个情况尤为明显。幸好同事找到了一篇文章来解决这个问题。文章中说的是在Cocos
Creator中的实现,这里我就按照文章的思路来做出Unity
Shader的形式。且为了我自己方便查找,我自然是要写一篇文章来记录一下啦。
核心思想
我们先获取到深度图中在视图空间下的深度,和自身在视图空间下的深度。然后我们通过一定的公式来修改其颜色或是其透明通道。
具体实现
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566Shader "Test/DepthTransit"{ Properties { _Color ("Color", Color ...