
Unity
fairen
这个作者很懒,什么都没留下…
展开
-
VBH加速结构(compute shader )RayTracing
Tip:VBH,RayTracing,Unity,Compute shader全名:Bounding volume hierarchy前言: 在我们写光追的时候,引入Mesh filter一类的不再是单独的模拟球,而涉及到Triangle,三角面的时候就会涉及到光线是否击中物体,也就是光线与物体的每一个三角面求交查看是否击中物体。涉及到这个最简单粗暴的就是遍历了,遍历是世界上最好的算法,没有之一。虽然肯定可以达到你要的效果,但是他会带来另一个致命缺陷开销过大,所以就开始各显神通创造多...原创 2021-11-02 16:52:42 · 2830 阅读 · 0 评论 -
Unity相机跟随游戏角色移动旋转(第三人称为主)
在unity中相机很多时候是自动跟随玩家移动和旋转的。我们想要实现该功能是有很多方法的,最简单的就是: 直接将相机挂载到角色上。 这样会导致很多局限性比如: A:你看到的是瞬移,而不是旋转过去。 B:你看到的是地面和场景旋转,而不是人旋转。这是不符合现实情况的。我们一般游戏里面旋转是。玩家快速发...原创 2021-08-20 17:00:02 · 6178 阅读 · 1 评论 -
多个Button批量注册监听注意事项
当我们为多个button进行批量注册监听的时候,很容易因为临时变量踩坑坑点可以查看图按照我的逻辑就会如此写,结果发现一直报错,无法正常进行事件的触发操作。报错信息为out of array length,数字越界了。那是什么导致的呢。打开VS进行debug发现每一次点击都有触发但是触发的时候显示 i == 16 ,但是我们objs数组只有0-15所以出错。这里很好理解呐,我们监听的时候,拿到了i的地址,当我们触发的时候会通过地址进行选址,拿到的i 就是最终版本的i了,所以..原创 2021-07-19 16:12:51 · 196 阅读 · 0 评论 -
Unity平滑函数Lerp简单介绍
首先简单举例几个适用情况呐。A:物体从a-b,如何平滑的到达b点B:物体旋转90,如何平滑首先按照情况先给答案后续进行解析为什么:void Awake() { StartCoroutine(RotateCam()); }IEnumerator RotateCam() { while(gameObject.transform.rotation!=qu) { yield return new原创 2021-07-16 18:36:14 · 8571 阅读 · 2 评论 -
Unity并发取随机导致相同解决方法(同一时间随机数不同)
当我们在去随机数的时候,如果多个脚本同时取随机数得到的随机数将会是一样的,因为随机数和时间以及种子有关,多个相同的脚本同时取随机数一定是一样的。解决方式: 寻找唯一标识符,很简单我想到的是通过基地址来达到目的(地址才是真正意义上的唯一标识符),同地址形成随机种子,然后在生成随机数目的达到。代码如下://头文件using System;using System.Runtime.InteropServices;//有一些步骤是可以优化的,介于前面写了部分代码,所以是添加的...原创 2021-07-02 18:50:35 · 1393 阅读 · 2 评论 -
Unity__UGUI__Image四种显示及其妙用(进度条)
img组件有四种基本的类型:分别是simple,sliced,tilled,filled四种首先我们跳过simple,直接开始sliced,按字面意思为切割,自然填充方式就是切割。切割逻辑如下,将图片切割成九宫格,当你选中会出现两种情况:该图片没有边界,以及:上面是状态,下面是九宫格模式,先不讲参数意义,我们先看参数变化,导致的结果,通过他来引导fill center参数子如起名:前面是未选,后面是选中,就是是否填充中心pixels per unit我将他分别设置成0.01,0..原创 2021-01-23 10:33:42 · 2503 阅读 · 0 评论 -
Toggle组件妙用--代替button点击切换图片,不用代码
如果我们要实现一下功能呢:正常情况下我们把它做成按钮,然后点击就切换背景图片就行今天发现一个使用toggle直接可以达到目的将toggle选中图片那个 √ 图片替换成你要的背景,就可以完全模拟,开关切换,并且可以达到醒目的效果,也避免了使用代码控制的冗余以及bug...原创 2021-01-22 16:34:37 · 1259 阅读 · 0 评论 -
unity.UGUI事件系统之Drag滑动事件
Drag滑动事件主要有四个event他们分别是:IInitializePotentialDragHandler, 初始化,鼠标最对应地方摁下出发(鼠标Down)每次点击触发一次IBeginDragHandler, 鼠标移动出发,第一下移动触发一次IDragHandler, 一直 触发IEndDragHandler 结束(鼠标Up)鼠标点击松开触发一次总的来说就是看图:主要是实现方式也是认为为继承接口using System.Collections;using Syst原创 2020-12-09 11:41:59 · 3992 阅读 · 0 评论 -
Unity UI添加监听三种方式(IpointxxxHandler实现接口,添加组件,EventTrigger脚本动态添加)
我们以点击事件为例,就是做出最常用也是通用的类似按钮的点击事件(因为基本差不多)首先我们看实现接口:(最常用)先看代码using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class S2Test : MonoBehaviour,IPointerCl原创 2020-12-09 10:16:56 · 2140 阅读 · 0 评论 -
NGUI.v3.1组件分享(百度网盘分享)
链接:https://pan.baidu.com/s/1jl8lH3FgMvUEkQTctawmYQ提取码:85sw不要再被那些憨批下载坑钱了。原创 2020-11-06 09:31:14 · 611 阅读 · 2 评论 -
ugui源码下载(2020年11月更新)github,附带百度网盘
github源码点击就可以https://github.com/Unity-Technologies/uGUI百度网盘链接链接:https://pan.baidu.com/s/1EbFYLMz2mp2YfVhLNgy8LQ提取码:fm72原创 2020-11-06 09:26:21 · 3002 阅读 · 0 评论 -
对象池(c#,unity),物体频繁使用适用
对象池,如同线程池,都是为了避免对象的频繁创建销毁在这里我们使用了上次写的单例来进行开发,因为原则上对象池只需要一个就行了using System;using System.Collections;using System.Collections.Generic;using UnityEngine;namespace Common{ /* * 使用方式: * 所有频繁创建销毁,都可以通过对象池创建回收 * 创建 * GameObje原创 2020-11-03 11:01:46 · 384 阅读 · 0 评论 -
单例(c#,游戏开发,针对于一个对象,脚本最都只有一个的情况)
单例思维逻辑啥的其实都很明白,使用的频繁也造就了他的重要性:设计思路:每次在使用他的时候,如果有了就直接使用,如果没有就内部创建一个出来故:实例使用:对象池using lala;//特殊命名空间可以删除using System.Collections;using System.Collections.Generic;using UnityEngine;namespace Common{ ///<summary> /// ///<summary>原创 2020-11-03 10:46:35 · 229 阅读 · 0 评论 -
Unity的StreamingAssets文件夹在不同平台的不同读写方式
第一使用条件编译指令:优点是选择性编译,只会编译符合条件的话不多说直接上代码默认读取的文件名字是 string fileName#if UNITY_EDITOR //编译器 url = "file://" + Application.dataPath + "/StreamingAssets/"+fileName;#elif UNITY_IPHONE //iphone url = "file://" +原创 2020-08-05 11:36:27 · 984 阅读 · 0 评论