自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

有趣的博客

空空如也

  • 博客(155)
  • 收藏
  • 关注

原创 Unity有限状态机的简易实现

本人嘴笨,不会说。该代码实现一个功能较为齐全的有限状态机,可用于大部分的应用场景。大致实现几个功能代码分为。

2023-10-16 20:31:41 555

原创 Lua function

Lua 尾调用是当一个函数的最后一个操作是调用另一个函数时,且没有涉及到其他函数,就形成了尾调用。尾调用不会开辟新的栈空间,而是直接返回到对应的最开始调用位置上。多返回值时,会一对一赋值对应变量,少于返回值的数目,则多出来的会被抛弃,多于返回值时,剩余部分会被赋值为 nil。函数调用和其他语言一样,唯一不同的是,当函数只有一个参数时,且这个参数为字符串常量或表构造器。当函数调用时,不处于一系列表达式的最后,那么函数只会返回一个值,剩余的会被舍弃。Lua 函数是可以返回多个值,且值的类型并不固定。

2023-02-24 16:07:31 766 1

原创 Lua table

同时 整型类型 与 浮点类型之间在table中是一致的,浮点型 2.0 等于 整型 2,不存在分歧问题,table会将整型浮点转为 number。由于在查询键的类型可以出现不同,如 number 与 string 之间的转换,需要注意。table 是 lua 中唯一的数据结构,可以用于表示。table 表示数组时,索引值从 1 开始,通过。意味移除该元素,所以当不需要此数据时,将其设为。table 的数据单元为一对键值。只能获得数组序列的大小,且序列中间不能为。它非常强大,可以储存任何数据类型。

2023-02-21 14:36:53 1158

原创 DoTween插件 API 总结

Tween 一般认为是补间,即补间动画。Tweener: 补间,控制变量并生成动画Sequence: 序列,控制多个补间或序列作为组来处理Tween: 通用词,表示补间与序列。: 嵌套补间,序列中包含的补间。DO: 快速方法实现的前缀Set: 设置效果。On: 回调函数。第一次调用 DoTween 时使用默认值自动初始化自身。如果希望自己去初始化 DoTween 的设置的话,可以使用这个静态方法。同时可以使用DOTween的全局设置对其进行调整。我们还可以使用。

2023-01-06 17:03:53 1851

原创 UGUI EventSystem事件整理

这里展示了Unity中 UGUI 的 EventSystem 的所有接口事件。

2022-12-18 15:38:34 110

原创 描边效果后处理 - Shader

【代码】描边效果后处理 - Shader。

2022-12-10 19:57:00 154 1

原创 雾效果后处理 - Shader

【代码】雾效果后处理 - Shader。

2022-12-10 19:56:09 141

原创 运动模糊后处理 - Shader

【代码】运动模糊后处理 - Shader。

2022-12-10 19:54:26 108

原创 我的创作纪念日

一下子就过去两年了,每当想起自己第一次学习C语言,踏上IT这条路,到现在学习各种杂七杂八的东西,非常感慨。这一路来,想过多少次放弃这条路。虽然开发游戏,不像玩游戏时那样好玩,但其开发的过程同样让我激动不已。第一次编程,第一次写算法,第一次做项目。自己虽然没有进步多少,但依然感慨自己走过了如此之久。每每想起也有许多人和我一样,热爱这自己所从事的职业,并为之努力,我相信自己也可以。我希望自己可以是一名合格的游戏开发者,虽然现在还是差距很远。

2022-11-30 15:06:15 444 2

原创 Bloom后处理效果

使用 高斯模式 对亮度高于对应阈值的像素进行模糊处理,并于原图形进行混合,来达到柔光的效果。

2022-11-22 16:00:14 222

原创 高斯模糊后处理效果

使用 高斯核 对像素进行模糊处理。

2022-11-22 15:56:46 168

原创 边缘检测后处理效果

使用 卷积核 对像素进行边界判断,使用 Sobel 算子 对横竖两个维度进行分别检测。

2022-11-22 15:54:12 461

原创 亮度,饱和度,对比度后处理效果

函数来对渲染纹理进行对应的shader处理。这里需要使用 Unity 的。函数对渲染后的画面进行处理。

2022-11-22 15:50:52 392

原创 shader 遮挡透视

遮挡透视 + 边缘光。

2022-11-22 12:46:46 199

原创 描边效果 - Unity Shader

【代码】描边效果 - Unity Shader。

2022-11-22 12:45:27 663 1

原创 纹理动画与广告牌技术(UnityShader)

应用了纹理动画与跟随镜头旋转。

2022-11-05 19:44:40 266

原创 玻璃效果实现(Unity)

使用 GrabPass 来实现玻璃的效果。

2022-10-30 16:05:32 475

原创 反射,折射,菲涅尔反射Shader实现

对物体入射角越小的反射效果越好,越大的边界反射亮度越大。(大概就是这样,具体查百度)它们都需要使用立方体纹理,也就是环境映射纹理。菲涅尔反射的效果跟接近现实中环境反射。- 对物体表面进行反射处理。- 对物体表面进行折射处理。

2022-10-29 15:57:10 333

原创 多光照阴影Shader实现

参考 Shader 入门精要中第九章内容。

2022-10-24 15:09:11 134

原创 Unity 四元数代码实现(自己实现)

值得注意的是四元数使用的是左乘,Unity中Transition中rotation使用的右乘。代码(Github) ->我的数学库实现代码中,有对。

2022-10-21 20:24:27 917 1

原创 游戏对象池模式(Unity)

(说明部分后面会写,这里先展示实现)

2022-10-14 20:34:30 547

原创 透明测试与透明混合实现 - UnityShader

来源为 Unity Shader 入门精要这本书 - 基础纹理和法线纹理的实现。透明测试 - 将透明度不足的像素不进行渲染,否则渲染。透明混合 - 就是我们常看到的透明物体。

2022-09-28 19:50:29 787

原创 渐变与遮罩纹理实现 - UnityShader

遮罩纹理控制高光反射的光照强度。渐变纹理控制漫反射的光照强度。代码承接上个博客 ->

2022-09-24 14:36:09 336

原创 法线纹理实现 - UnityShader

法线纹理需要将坐标系从世界坐标系的计算,转换为切线坐标系。在通过提取得到的法线进行光照计算。来源为 Unity Shader 入门精要这本书 - 基础纹理和法线纹理的实现。基础纹理比较简单,直接提取对应的颜色即可,进行光照计算即可。

2022-09-22 21:05:40 607

原创 高光反射 - UnityShader

代码包含了 漫反射,高光反射,环境光。这个代码是继续上次博客的代码 ->Blinn - Phong 模型。参数与上面相同,h 为特殊的参数。为光线的反射对于法线的方向。高光反射分为两种实现。

2022-09-20 13:57:37 739

原创 漫反射实现 - UnityShader

在兰伯特的基础上增加亮光(添加两个偏移)是指法线与光线方向的角度。使用的公式是兰伯特定律。

2022-09-18 19:41:42 417

原创 Unity 消息推送

或者Component的成员函数,只要得到一个对象,然后调用它的这三个函数就可以进行一个消息的推送。与UGUI事件机制相同,通过注册和移除监听者,可以在Inspector面板中设置相关方法。可以非常方便我们的脚本开发,它实现的是一种伪监听者模式,利用的是。注意,不会将消息发送到非活动对象。使用CSharp的event。调用此游戏对象中的每个。调用此游戏对象中的每个。调用此游戏对象或其。...

2022-07-23 11:22:54 1285

原创 3D数学 - 矢量

Vector 在物理上被称为 矢量,在数学上被称为向量。矢量的定义:是一个既有大小又有方向的量。表示方式有两种,选一种即可,如下行向量:[a1a2a3]列向量:[a1a2a3](1)行向量:\left[\begin{matrix}a_1 & a_2 & a_3\end{matrix}\right]\tag{1}\\列向量:\left[\begin{matrix}a_1\\a_2\\a_3\end{matrix}\right]行向量:[a1​​a2​​a3​​]列向量:⎣⎡​a1​

2022-07-22 17:45:36 733

原创 3D数学 - 三角函数

三角有两种表达方式,一种是人类喜欢的角度Degree,一种是数学喜欢的表达Redian。这里演示一个物体的随机旋转,确定一个围绕旋转的物体,然后生成多个物体围绕它旋转。我们无需手写,一般数学库中包含了角度与弧度的相互转换。在三角形的其他公式,如正弦定理,余弦定理。一般的数学库还提供反三角函数,如。,还有一些其他形式三角函数。,它们可以将其转换为角度。...............

2022-07-20 16:07:59 744

原创 行为型模式总结

通过双接口形式,实现不同对象间的访问权限不同,使得可以保存对象的快照,且不用担心其他对象的修改和使用。但由于备忘录模式的快照,可以使用其他技术来完成,如序列化等,且更为直观简单,所以并不常用。观察者模式对订阅事件的对象,可以进行及时的通知,且这样的订阅是以动态的方式。通过中介者类来进行对各个对象的交互管理,使得各个对象相互独立,不在大量依赖各种对象,而是跟中介者交互,简化了交互的复杂性,降低耦合。将调用者和实现者请求参数化成命令对象,通过对命令对象的管理和调用,来灵活的对请求进行处理。...

2022-07-16 11:14:16 148

原创 备忘录模式 - Unity

在许多游戏里,我们都会有存档功能,在存档过程中进行状态保存。还有许多的软件都有撤销功能,除了对命令的储存,还有对当前状态的保存。备忘录模式是对象行为型模式,也称快照模式,在不破坏封装性的前提下,捕获一个对象状态并保存,而且可以在需要的时候,进行还原。实现状态保存并不难,但我们需要对保存对象的字段进行保护的前提下,还可以对其进行保存。这里使用双接口的形式来完成对不同类的访问。使用的是SteamAssets文件夹。我们可以使用两个接口来实现双接口操作。在不支持嵌套类的语言中。通过两个按钮进行测试。...

2022-07-15 11:28:30 632

原创 C# IO 常见API

Unity 的序列化是作用于 C# 类的字段 而非属性。序列化规则对于需要被序列化的字段,需要遵守一些规则属性序列化其余情况下,都不可以使用属性序列化。

2022-07-14 17:23:49 250

原创 Unity序列化

Unity 的序列化是作用于 C# 类的字段 而非属性。序列化规则对于需要被序列化的字段,需要遵守一些规则属性序列化其余情况下,都不可以使用属性序列化。

2022-07-13 10:25:17 2213

原创 访问者模式 - Unity

访问者模式是对象行为型模式,将某中数据类型中的元素分离封装成类,在不改变原本的数据结构的情况下可以添加作用于这些元素的新的操作,为数据结构的每个元素提供多个访问方式。它在不改变原数据结构的情况下,为类扩展了方法。访问者模式将新的类的行为,放入了一个名叫访问者的类中,而不是去添加到原有的类中。这样的交互方式不仅没有对原有的类造成污染,还实现了我们需要添加的方法。说明抽象访问者具体访问者抽象元素具体元素对象结构调用端访问者模式通过两次分派,一次动态分派和一次静态分派,来实现了伪动态分派的效果。优点

2022-07-12 10:53:12 215

原创 LeetCode 676(C#)

设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于你构建的字典中。实现 MagicDictionary 类:MagicDictionary() 初始化对象void buildDict(String[] dictionary) 使用字符串数组 dictionary 设定该数据结构,dictionary 中的字符串互不相同bool search(String searchWord) 给定一个字符

2022-07-11 09:06:16 94

原创 迭代器模式 - Unity

迭代器模式是对象行为型模式,它提供一个对象来顺序访问聚合对象中的元素(遍历元素的算法),且不暴露底层实现。集合是编程中非常常见的数据结构之一。对于不同数据类型所需要的不同的遍历方式。但大多数客户端并不关心数据存储的方式。所以由于集合的遍历方式的不同,我们需要将集合遍历的算法,从集合中抽取出来,而抽取的部分,就是迭代器。迭代器通常会提供获取集合元素的基本方法。客户端通过不断调用此方法,直至遍历结束。在 C# 中 就是对于迭代器遍历元素的具体实现。foreach 需要集合类继承 接口, 只有一个方法就是返回

2022-07-10 16:43:23 818

原创 中介者模式 - Unity

中介者模式是对象行为型模式,它通过将一系列对象之间的交互进行封装,使得之前混乱无需的网状的依赖关系,变成一种星状的依赖关系,使得每个对象之间可以独立的改变它们的交互。中介者模式也是迪米特法则的经典运用。在现实生活中,这样的运用非常常见,如聊天时,信息需要经过服务器,此时服务器就是一个中介者。GUI元素的大量交互也是通过控制器去完成的,而控制器就是一个中介者。中介者模式将原本互相依赖的对象,相互独立,它们之间的交互需要强行使用中介者来进行,从而保证对象的独立,降低耦合。中介者模式将多个对象的网状关系网封装,从

2022-07-09 14:59:03 451

原创 观察者模式 - Unity

观察者模式是对象行为型模式,使用订阅制模式,当发送者状态发生改变时,它可以向订阅者发出通知并使得订阅者进行更新。观察者模式非常常见,如微信公众号,平台消息等,都算是观察者模式的行为,C# 中 event 事件就是一种观察者模式。观察者模式非常常用,主要是针对一对多的单向连接,这种动态的订阅和取消订阅的方式,来轻松建立连接。说明观察者接口观察者对象(通知时,变为青色)抽象按钮(抽象主题)发送者(具体主题)客户端添加对象优点缺点...

2022-07-07 19:13:33 906

原创 LeetCode 648(C#)

在英语中,我们有一个叫做 词根(root) 的概念,可以词根后面添加其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。现在,给定一个由许多词根组成的词典 dictionary 和一个用空格分隔单词形成的句子 sentence。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。你需要输出替换之后的句子。示例 1:输入:dictionary =

2022-07-07 10:47:55 121

原创 L1-028 判断素数(Lua)

本题的目标很简单,就是判断一个给定的正整数是否素数。输入格式:输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231的需要判断的正整数。输出格式:对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。输入样例:211111输出样例:YesNo...

2022-07-05 22:01:53 314

空空如也

空空如也

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

TA关注的人

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