笔记
文章平均质量分 54
小pig饲养员
为了独立游戏正在努力积攒经济基础的程序员。
展开
-
UE4贴图自适应屏幕大小
UE4如何特殊处理UV坐标从而自让材质自适应模型大小(图片缩放贴图不缩放)原创 2022-11-24 18:18:00 · 1872 阅读 · 0 评论 -
UE4获取当前帧的UMG长度信息
UMG获取长度原创 2022-08-30 17:44:37 · 669 阅读 · 0 评论 -
《Unity shader入门精要》复习<第13章 关于NDC坐标和深度/法线纹理>
分为三个地方讲解。NDC(Normalize Device Coordinates)归一化的设备坐标NDC坐标是世界空间坐标通过MVP变换之后再进行归一化得到的坐标。只需要再一步变换就能得到屏幕空间坐标。顺便提一下因为已经归一化了,如果需要从NDC坐标还原成世界坐标,需要注意最后除w分量。何为线性何为非线性正交投影得到的深度是线性的,而透视投影得到深度是非线性的。所谓线性,就是指变化曲线的一阶导数为常量,也就是说变化量是恒定的。既然变换是恒定的,那么即深度z的采样点在[-1,]1之间均匀分布。正原创 2022-03-08 23:33:07 · 7237 阅读 · 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 · 1330 阅读 · 0 评论 -
《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 · 2346 阅读 · 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 · 2211 阅读 · 1 评论 -
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 · 849 阅读 · 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 · 2790 阅读 · 1 评论 -
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 · 3318 阅读 · 2 评论 -
Unity基础UI框架
序大学学了那么久的unity,正觉得要进入佳境,学完设计模式以后已经有可能完成大多数需求的能力(自己给自己的需求),结果鹅厂要求的ue竟是和unity的编程方式一点也不一样。而且从unity诞生的时间结点来看-------比虚幻4晚,也就说明其C#编程的思想是C++的升级版,C++必然向后兼容,但是C#肯定没必要向后兼容。现在还没有开始系统学习ue,可能开始之后就会很想念unity了。目的这只是针对大家做一些小游戏的时候可能用到的UI框架,主要目的在于:不需要在Scene面板提前创建好UI,界面看原创 2021-06-16 15:20:16 · 4760 阅读 · 7 评论 -
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 · 1326 阅读 · 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 · 2578 阅读 · 0 评论 -
C#属性
启:做了好长一段时间的demo,由于C#中本来就包含了C++的几乎所有特性(面向对象),所以习惯于C++的我还是没什么用到C#中的一些方便的东西,然后也不知道什么时候该用,换而言之(菜)。之前大二的时候就系统学习了C#,只是笔记都没丢上来。所以打算在锻炼游戏开发开发的过程中,逐渐使用一些相关的特性,让自己变强一些(变得不是那么菜)属性的概述属性(Property) 是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为原创 2021-04-30 11:30:44 · 4079 阅读 · 0 评论 -
Unity实现数据存储和读取持久化(PlayerPrefs、序列化、JSON、XML)
只要用文件的形式存储,其实有很多种不同办法都能实现原创 2021-04-23 22:01:19 · 2019 阅读 · 2 评论 -
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 · 3704 阅读 · 5 评论 -
LeetCode每日一题-4.14-208-实现Trie(前缀树)
这题似乎就是单纯考察前缀数的知识,也是菜鸡第一次听说前缀树。学点新东西吧。Trie入门操作Trie的数据结构struct TrieNode { bool isEnd; //该结点是否是一个串的结束 TrieNode* next[26]; //字母映射表};三种操作插入实现:这个操作和构建链表很像。首先从根结点的子结点开始与 word 第一个字符进行匹配,一直匹配到前缀链上没有对应的字符,这时开始不断开辟新的结点,直到插入完 word 的最后一个字符,同时还要将最后一个结点原创 2021-04-14 23:25:47 · 95 阅读 · 0 评论 -
Unity实现异步加载场景+进度条
场景的切换是游戏中不可避免的。一般来说,为了防止同步加载所带来的卡顿感,我们都会选择使用异步加载场景。在加载的过程中,一般是弄一个进度条或者弄个转转转的小圈圈,甚至可以弄个小游戏。这里简单介绍一下如何实现。思路定义异步对象 private AsyncOperation m_Operation;场景加载协程 IEnumerator LoadScence(String loadScenceName) { operation = SceneManager.LoadS原创 2021-04-08 17:28:43 · 803 阅读 · 0 评论 -
Unity加载场景
Unity官方提供了4种加载场景(scene)的方法,分别是:Application.LoadLevel():同步加载Application.LoadLevelAsync():异步加载Application.LoadLevelAddictive():同步附加式加载Application.LoadLevelAddictiveAsync():异步附加式加载下面对这四种方法进行简要的介绍和分析:1.同步加载:假设当前场景为A,我们要切换到场景B,unity会在切换场景的时候将场景B中的所有内容(场原创 2021-04-02 23:19:40 · 1727 阅读 · 0 评论 -
2021腾讯魔方工作室暑期实习一面+二面+HR面(已OC)
一面:36min项目介绍在其中做了什么,遇到什么难点(AI,回答动态寻路)介绍一下行为树有哪些结点事件通知中心怎么实现C++多态怎么实现虚函数实现机制Map和hashmap拷贝构造函数内存分区数组越界要怎么知道?Dynamic cast线代,正交矩阵,正交矩阵的逆C#装箱拆箱矩阵rotation scale transation变化顺序渲染管道在游戏中经历了什么快速成长你刚刚说的骨骼动画 那个什么a什么你懂吗还有什么要问的吗我:什么不足?培训流程?二面1hou原创 2021-03-24 09:47:33 · 2078 阅读 · 0 评论 -
C++ atoi和stoi
在做算法题的时候,如果char转为int只需要 c - '0’即可得到对应数字。但是遇到string类型需要转化为数字就可以调用函数 atoi 和 stoi通常用法 string a = "3"; atoi(a.c_str); string b = "3"; stoi(b);头文件include<cstring>区别:1. atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const cha原创 2021-03-20 23:16:57 · 231 阅读 · 0 评论 -
二叉树的三种遍历方式(递归+非递归)
总思路首先树的遍历一共有三种前序遍历顺序是 根结点 - 左子树 - 右子树后序遍历顺序是 左子树 - 右子树 - 根结点中序遍历顺序是 左子树 - 根结点 - 右子树并且对于每个结点都按照一样的顺序递归执行递归递归方式下,大家都很熟悉,无非就是函数体内根据遍历的顺序来调用。void preorder(TreeNode* root) { if(root == nullptr) { return; } ans.pu原创 2021-03-12 21:31:32 · 203 阅读 · 0 评论 -
面向对象程序设计
之前复习面向对象的时候整理的,丢出来一起分享一下。因为复习得很赶,只是大致的整理,且大部分图片来自老师的ppt,可能不是很准确。如果要详细了解其中的某个知识点请另外搜索。但是老师不讲武德啊,明明提纲给了不按提纲考,还从开卷变成闭卷。大意了,当时就不应该报啊。一、面向对象程序设计的基本概念1.面向对象的基本思想(1)客观事物是由对象组成的,对象是在原事物基础上抽象的结果。(2)对象是由属性和操作组成的,其属性反映了对象的数据信息特征,而操作则用来定义改变对象属性状态的各种操作方式。(3)对象之间的原创 2020-12-09 15:37:28 · 13608 阅读 · 0 评论