自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(143)
  • 问答 (1)
  • 收藏
  • 关注

原创 震惊!25岁普信男又思索出自己的成功学?

写这篇文章一是提醒自己继续更新,二是此时此刻处于一个发现自己半年没有自主学习,并且之前学的东西都忘光的情况,缓解一下焦虑。

2024-10-28 17:11:01 264

原创 图解Dijkstra和Bellman-Ford的流程以及证明

寻路算法Dijkstra和Bellman-Ford分析

2024-03-28 23:44:35 329

原创 碰撞检测进阶:凹多边形转凸多边形

如何将凹多边形转为凸多边形

2024-03-20 18:32:11 1705 7

原创 基础GamePlay知识-凸多边形碰撞检测(SAT)

在Unity中利用分离轴进行多边形碰撞检测

2024-03-15 23:56:58 694

原创 基础GamePlay知识-矩形和矩形/矩形和圆形/旋转矩形和圆形的碰撞检测

主要介绍AABB碰撞检测下,矩形该如何和矩形进行碰撞检测/和圆形进行碰撞检测。直接看图,主要是比较两个矩形的边界线的前后关系。

2024-03-09 23:17:06 594

原创 基础GamePlay知识-扇形和点/扇形和圆碰撞检测

扇形碰撞检测

2024-03-08 21:17:24 1017

原创 Unity绘制六边形体

在unity中动态生成蜂窝网络

2024-02-29 00:04:55 1786

原创 记一件人生大事——从大厂离开

大三的时候学长找到了不错的工作,告诉我应该去试试大厂实习,其实很容易进,我准备了半年,拿到了offer,然后实习转正,之后就到了现在。我把我前面的努力全盘范定,我要的生活,是有自己想追求的东西,我曾经加入社团的梦想是未来能够做一个伟大游戏,在制作人名单上放出来,但我努力的方向是,来这边996,做ui仔换钱。好,我继续加班,两天改出来。让我想要离职的直接原因是上个版本,4个大需求,拆分起来三十几个子需求,只给一个月的时间,我几乎每天都做到晚上十点多,安慰自己熬到了开发截止改bug的时期就熬过去了。

2023-09-19 14:51:36 239 1

原创 LeetCode:1590. 使数组和能被 P 整除

lc每日一题 2023.3.10

2023-03-10 16:19:35 498 1

原创 近期工作感悟

工作感悟

2023-02-13 15:00:35 610 1

原创 UE4贴图自适应屏幕大小

UE4如何特殊处理UV坐标从而自让材质自适应模型大小(图片缩放贴图不缩放)

2022-11-24 18:18:00 2102

原创 UE4获取当前帧的UMG长度信息

UMG获取长度

2022-08-30 17:44:37 846

原创 UE 根据字体长度进行省略号截断[unlua]

UE4截取字符

2022-08-16 19:57:50 139

原创 Unity shader实现水波效果

先放效果只想要代码可以直接拉到3.0原理把波产生的点作为圆形,往外的半径方向作为变量,通过波的公式来偏移uv取值,从而模拟波。1.0一个从平面中心不断波动的效果ps:不是后处理,直接作为material赋给平面使用,为了防止波变成椭圆,需要在变量中更新平面的长宽比。Shader "MyShader/waterWave"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Strength(

2022-03-29 17:16:50 6397 7

原创 Re:《Unity Shader入门精要》13.3全局雾效--如何从深度纹理重构世界坐标

空间还原游戏特效,后处理是必不可少的,而后处理经常需要我们得到当前画面的像素对应世界空间的所有信息。思路通过深度纹理取得NDC坐标,然后再通过NDC坐标还原成世界空间坐标//csharp脚本部分Matrix4x4 matrix = camera.projectionMatrix * camera * worldToCameraMatrix;Matrix4x4 InverseMatrix = matrix.inverse;//shader部分float d = SAMPLE_DEPTH_

2022-03-17 23:29:47 4485 16

原创 《Unity shader入门精要》复习<第13章 关于NDC坐标和深度/法线纹理>

分为三个地方讲解。NDC(Normalize Device Coordinates)归一化的设备坐标NDC坐标是世界空间坐标通过MVP变换之后再进行归一化得到的坐标。只需要再一步变换就能得到屏幕空间坐标。顺便提一下因为已经归一化了,如果需要从NDC坐标还原成世界坐标,需要注意最后除w分量。何为线性何为非线性正交投影得到的深度是线性的,而透视投影得到深度是非线性的。所谓线性,就是指变化曲线的一阶导数为常量,也就是说变化量是恒定的。既然变换是恒定的,那么即深度z的采样点在[-1,]1之间均匀分布。正

2022-03-08 23:33:07 7330 4

原创 【Socket】shutdown之后需不需要recv再closeSocket

在学习socket文件传输的过程中发现,教程在linux的客户端代码实现中,最后部分的处理如下 shutdown(clientSock, SHUT_WR); fclose(file); close(clientSock); close(sock); return 0;但是windows的客户端却多了一句recv(clntSock, buffer, BUF_SIZE, 0); shutdown(clntSock, SD_SEND); //文件读取完毕,断开输出流,向客户端发送FI

2022-02-16 23:20:04 1406

原创 《shader入门精要》13.2再谈运动模糊中片元着色器的世界坐标的计算

具体在书p275页这里为啥需要除D.w呢。首先我们得到的NDC的坐标是已经归一化的,但是CurrenViewProjectionInverseMatrix的作用,是把世界空间转化为尚未归一化的裁剪空间的矩阵。这里书上有说明。查找Unity的函数我们就能知道变换得到的顶点坐标是没有归一化的Camera.projectionMatrix. static Matrix4x4 PerspectiveOffCenter(float left, float right, float bottom, fl

2022-01-16 00:57:15 2417 1

原创 《Shader入门精要》第11章-11.3.1流动的河流中的offset.x的解释

在我学习入门精要的时候,经常遇到不解释api,甚至是关键代码的实现原理。11.3.1流动的河流中的offset.x的sin函数查了一下好像大家也都是书上原话直接复制,现在好不容易想明白了希望能帮到和我一样一脸懵逼的人。// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Unity Shaders Book/Chapter 11/Water" { Properties {

2022-01-09 01:14:17 2260 1

转载 Unity修改assetStore存储位置

相信大多数学unity的学生,c盘都是炸的,我也不例外,今天在网上找到了可以修改AssetStore存储路径的办法,必须安利一下。简单粗暴。原文链接:https://blog.csdn.net/sinat_41822552/article/details/112059936正文第一步:需要复制C盘中Asset Store这个地址到一个文本文档记录一下(是包含Asset Store这个文件夹的地址)C:\Users\你自己的用户名\AppData\Roaming\Unity\Asset Store-

2021-10-22 13:14:59 1020

原创 Unity场景创建重复单例类的时候销毁

游戏中有时候GamManager放在开始场景,结果再次加载的时候就出现两个了。之前采取的解决方法是弄一个“工具人”:初始场景,利用状态模式让其加载开始场景,GameManager就只会在它出现的时候创建一次,突然也可以通过判断单例是否已经存在的办法来管理。代码如下 private void Awake() { if (Instance == null) { Instance = this; GameObje

2021-09-08 15:19:47 913

原创 Unity利用Slerp实现弧线跟踪效果

最近在B站乱七八糟看了很多不同的视频,发现弧线的跟踪弹实现的思路基本都是类似的思路固定物体的速度,利用圆形弧线差值来改变物体的方向。Vector3.Slerp(transform.position, transform.position, float smooth);当smooth趋近0返回第一个参数的Vector3,smooth趋近1返回第二个参数的Vector3类型,0到1之间经过复杂的计算得到两个参数对应方向之间,根据 smooth/1.得到两者之间角度的占比,返回该角度对应的方向。演示

2021-07-12 18:12:23 986 2

原创 Unity2d SpriteRenderer修改颜色实现逐渐透明

原理SpriteRenderer.Color(r, g, b, a);前三个参数控制颜色,最后一个控制透明度,取值皆为[0,1];0000为白色透明 1111位黑色不透明实现逐渐透明效果 private SpriterRenderer sp; public float fadeSpeed; void Awake() { sp = GetComponent<SpriteRenderer>(); StartCoroutine(Fade());

2021-07-10 10:39:53 3643 2

原创 Unity3D使物体跟随鼠标旋转

代码using System.Collections;using System.Collections.Generic;using UnityEngine;public class RotateToMouse : MonoBehaviour{ public float speed; private Vector2 direction; private Vector2 direction2; void Update() { FollowMo

2021-07-07 23:58:44 3210 1

原创 Unity基础UI框架

序大学学了那么久的unity,正觉得要进入佳境,学完设计模式以后已经有可能完成大多数需求的能力(自己给自己的需求),结果鹅厂要求的ue竟是和unity的编程方式一点也不一样。而且从unity诞生的时间结点来看-------比虚幻4晚,也就说明其C#编程的思想是C++的升级版,C++必然向后兼容,但是C#肯定没必要向后兼容。现在还没有开始系统学习ue,可能开始之后就会很想念unity了。目的这只是针对大家做一些小游戏的时候可能用到的UI框架,主要目的在于:不需要在Scene面板提前创建好UI,界面看

2021-06-16 15:20:16 5004 7

原创 LeetCode每日一题-6.10-518-零钱兑换II

题目描述思路 动态规划如果比较有经验,应该一开始就会觉得是青蛙跳台阶的改版,也就是给了你能够跳的台阶的数组,并且取消排列算不同方案。首先给定可以跳的数组,只需要修改函数变为dp[i] = dp[i - coin[0]] + dp[i - coin[1]] + . . . . .dp[i - coin[n]]那么可能理所当然会写出这样的代码 for(int i = value; i <= amount; i++) { for(int i =

2021-06-10 22:48:31 183 2

原创 LeetCode每日一题-4.28-633-平方数之和

题目描述解法 逼近法一个数从0,另一个从sqrt(c)开始,0的那个只增不减,sqrt©只减不增。 bool judgeSquareSum(int c) { long long l = 0, r = sqrt(c); if(c == 0) return true; while(l * l + r * r != c && l <= r) { if(l * l + r * r > c) {

2021-06-06 14:53:34 135

原创 LeetCode每日一题-4.17-220-存在重复元素III

题目描述解法 滑动窗口 + 集合保证abs(i - j)只需要使用滑动窗口即可,那么需要的就是在这个固定大小的窗口找到两个数,保证abs(num[i] - num[j] <= t)由于数组的元素是无序的,所以如果我们每次加入一个新的元素都去全部比较一边,是非常耗时的,所以就会想到在插入窗口的时候把它变成有序的。那么理所当然就会使用集合来插入。再结合stl的set内置的api:s.lower_bound(num)//可以找到第一个比num大的元素就能得到代码,详细思路写在注释了。cla

2021-06-06 14:30:31 157

原创 LeetCode每日一题-6.5-203-移除链表元素

题目描述解法 双指针使用pre和cur指针这是第一遍尝试的代码class Solution {public: ListNode* removeElements(ListNode* head, int val) { if(head == nullptr) return nullptr; ListNode* cur = head; ListNode* pre = cur; while(cur && cur -&g

2021-06-05 23:54:53 149 2

原创 Unity二次加载同样场景时出现报错

相信学到一定程度,大家都会使用事件中心来实现各种功能。于是乎这个问题出现的概率就提高了MissingReferenceException: The object of type ‘xxxxx’ has been destory but you are still trying to access it初次遇到这个问题的时候,百思不得其解,而且出现以后bug都奇奇怪怪甚至让人无法理解。博主逐句注释,各种输出,绕着弯子解决。比如等等…唠叨一下而已,不知道各位是不是和我一样崩溃。解决在场景结

2021-05-22 10:36:27 1583 2

原创 Unity实现鼠标放在按钮上面的时候触发方法

如下代码,放到对应按钮就能实现。using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;public class SetButtom : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler{ public Animator ImageAnim; public Button Button;//鼠标进入 public void OnP

2021-05-18 19:18:16 2875

原创 C#属性

启:做了好长一段时间的demo,由于C#中本来就包含了C++的几乎所有特性(面向对象),所以习惯于C++的我还是没什么用到C#中的一些方便的东西,然后也不知道什么时候该用,换而言之(菜)。之前大二的时候就系统学习了C#,只是笔记都没丢上来。所以打算在锻炼游戏开发开发的过程中,逐渐使用一些相关的特性,让自己变强一些(变得不是那么菜)属性的概述属性(Property) 是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为

2021-04-30 11:30:44 4213

原创 Unity实现数据存储和读取持久化(PlayerPrefs、序列化、JSON、XML)

只要用文件的形式存储,其实有很多种不同办法都能实现

2021-04-23 22:01:19 2968 2

原创 LeetCode-5-最长回文子串

题目描述解法 暴力遍历遍历所有子字符串,观察其是否是回文串妥妥超时class Solution {//思路:一个函数判断是不是回文串//暴力递归//会超时public: string longestPalindrome(string s) { int slen = s.size(); int ans1 = 0, ans2 = 0; string ans; for(int l = 0; l < s.size();

2021-04-21 20:50:03 88

原创 Unity2D使用Trail Renderer实现拖尾效果

在制作demo的时候,想要给人物添加一个拖尾特效,然后unity刚好有配套的组件,赶紧去尝试了一下。结果就发生了两个问题。使用Trail Render组件使用Trail Render很简答,在你想要产生特效的物体下面新建一个空物体,在Add Component搜索1. 产生的trail会被Sprite遮住,无论Order in Layer的关系如何经过查找得知要把材质换成Sprite/diffuse,但是又产生了第二个问题3. 选择trail的材质如果选择...

2021-04-20 23:59:53 4138 5

原创 LeetCode每日一题-4.14-208-实现Trie(前缀树)

这题似乎就是单纯考察前缀数的知识,也是菜鸡第一次听说前缀树。学点新东西吧。Trie入门操作Trie的数据结构struct TrieNode { bool isEnd; //该结点是否是一个串的结束 TrieNode* next[26]; //字母映射表};三种操作插入实现:这个操作和构建链表很像。首先从根结点的子结点开始与 word 第一个字符进行匹配,一直匹配到前缀链上没有对应的字符,这时开始不断开辟新的结点,直到插入完 word 的最后一个字符,同时还要将最后一个结点

2021-04-14 23:25:47 116

原创 Unity发现字体模糊怎么办

先把字体和字体框都调得很大然后使用Scale Tool缩小要多清晰有多清晰 (◕ᴗ◕✿)

2021-04-10 21:19:21 1293 1

原创 Unity实现异步加载场景+进度条

场景的切换是游戏中不可避免的。一般来说,为了防止同步加载所带来的卡顿感,我们都会选择使用异步加载场景。在加载的过程中,一般是弄一个进度条或者弄个转转转的小圈圈,甚至可以弄个小游戏。这里简单介绍一下如何实现。思路定义异步对象 private AsyncOperation m_Operation;场景加载协程 IEnumerator LoadScence(String loadScenceName) { operation = SceneManager.LoadS

2021-04-08 17:28:43 878

原创 LeetCode每日一题-4.6-80-删除有序数组中的重复项II

前置题目26-删除有序数组中的重复项解法 快慢指针将一个有序数组变成每个数字只能出现一次的数组,由于要求的空间复杂度是O(1)而且是原地修改,所以就很容易联想到用双指针。一个指针负责遍历数组,另一个在指定位置填入数字。初始:由于可以保证至少放入一个元素,所以两个指针都从下标1往后遍历逻辑:slow指向的是待填入元素的位置,所以nums[]...

2021-04-06 22:01:24 134

原创 LeetCode每日一题-4.4-781-森林中的兔子

题目描述找规律思路见注释class Solution {//思路:相同数字说明同一群,不同说明不同群,没群个数为该数字+1public: int numRabbits(vector<int>& answers) { unordered_map<int, int> m; int ans = 0; //统计每个数字出现的次数 for(int num : answers) {

2021-04-04 13:43:26 143

空空如也

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

TA关注的人

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