
小技巧
Weirdoand
记录学习过程 体验人生百态
展开
-
Unity 异步加载场景
思路(需要协程)创建AsyncOperation类的变量用来获取下个场景 将allowSceneActivation(自动加载下个场景)设置为false 在每帧中检测isDone(是否加载好场景) 没加载好就将progress的值赋值给slider的value,因为progress的值是0-1的所以可以直接赋值给value 显示百分比直接将progress的值 * 100就可以 判断是否加载完成如果progress是0.9就代表加载完成了,因为我们上面设置了allowSceneActiv原创 2022-04-07 09:36:15 · 1215 阅读 · 0 评论 -
Unity(使用GUI制作第一人称鼠标准星)
属性 简介 方法 注意:准星一般都放在屏幕正中央,所以屏幕的(宽高/2)可得中心点 屏幕宽度 Screen.Width 屏幕高度 Screen.Height 矩形宽度 自己声明的变量这里使用W代替 矩形高度 自己声明的变量这里使用H代替 准星间距 自己声明的变量这里使用D代替 解释图写入过程因为我们想要动态准星所以打算自己用代码写一个,而不用图片直接贴上去先声明准星的宽高,和间距其次就是准星贴图原创 2022-03-23 11:41:27 · 6771 阅读 · 0 评论 -
Unity VR(PicoVR)
VR常用方法(Pico_API)手柄 介绍 方法 判断按钮是否按住 Pvr_UnitySDKAPI.Controller.UPvr_GetKey() 判断按键是否按下 Pvr_UnitySDKAPI.Controller.UPvr_GetKeyDown() 判断按键是否抬起 Pvr_UnitySDKAPI.Controller.UPvr_GetKeyUp() 判断按键是否被长按 Pvr_UnitySDKAPI...原创 2022-03-02 20:57:23 · 2704 阅读 · 0 评论 -
Unity Cursor(光标设置)
Static Properties 静态属性 lockState 确定硬件指针是锁定到视图中心、受限于窗口还是根本不受限。 visible 确定硬件指针是否可见。 CursorLockMode(给lockState赋值的) 名称 介绍 None 鼠标解除修改(限制),并恢复显示 Locked 将光标锁定到Game窗口的中心,并隐藏 Confined 将光标限制在Game窗口中,并显示 Stat原创 2022-03-12 11:05:02 · 5833 阅读 · 0 评论 -
Unity 【VR&Android】打包问题错误
打包出现此情况的解决办法原创 2022-03-03 08:40:50 · 3177 阅读 · 0 评论 -
Unity 相机跟随(第三人称视角)
思路声明两个变量 相机高度 相机距离目标多少米 在Start中获取相机偏差值 声明一个变量位置坐标将所有值带入算出相机观察点坐标 使用Lerp插值移动过去 在LookAt玩家实例原创 2022-03-08 14:16:30 · 2716 阅读 · 0 评论 -
Unity (导航AI使用预期数值获得动画数值和角数值)
使用方法 使用方法 简介 Vector3.Project 求一个向量的投影(返回的是一个向量) Vector3.Angle 求一个角度(返回的是float) Vector3.Cross 使用叉乘获取(某个物体在自身的左右) Mathf.Deg2Rad 将一个度数转换为弧度(返回的是一个float) 步骤 1、先获取导航上的期望速度(desiredVelocity)2、使用向量投影方法获取得...原创 2022-01-19 15:43:40 · 1150 阅读 · 0 评论 -
Unity enabled & Single(关闭组件和单例)
1、先获取需要关闭的组件2、在代码中用获取组件的变量点出enabled原创 2022-01-11 18:10:40 · 4405 阅读 · 0 评论 -
Unity(相机跟随)
[Header("获取目标")] public Transform play; private Vector3 offset; private void Start() { // 获取玩家和相机之间的向量(他们之间的距离) offset = play.transform.position - transform.position; } private void Update() { // 每帧刷新相机位置并让相机始终在他们之间的向量上 transf...原创 2021-11-12 16:37:30 · 2151 阅读 · 0 评论 -
Unity(如何通过简单的运算判断该次攻击是否暴击)
1、声明一个0-1之间的浮点数,用来充当暴击率2、运用Random.value属性(返回一个介于 0.0 [包括] 和 1.0 [包括] 之间的随机数。)3、并用声明的数跟随机的数作比较3.1、随机的数大的话就暴击,反之则不暴击实例:...原创 2022-01-25 16:41:43 · 1597 阅读 · 0 评论 -
Unity(创建扩展方法在游戏脚本中调用)
步骤:1、扩展方法的脚本不能继承MonoBehaviour2、类名需要添加静态(static),不能添加变量只能添加常量(const)3、创建方法中也需要添加静态(static)3.1、第一个参数需要添加this,表示自身的组件,并在调用时不会显示第一个参数且只能使用第一个参数的类调用出来3.2、第二个参数就是目标类型参数 4、调用时需要在当前项目任何脚本中调...原创 2022-01-27 17:20:23 · 936 阅读 · 0 评论 -
Unity(判断一个导航点是否在可移动的区域内)
方法:NavMesh.SamplePosition(Position,hit,maxDistance,areaMask)参数Position:原始位置hit:保留所声称位置的属性maxDistance:以游戏对象为中心,这个数值为半径,获取一个点并判断是否满足要求areaMask:允许通行的导航网格下标描述返回值类型为布尔在指定范围内找到导航网格上最近的点。此函...原创 2022-01-24 18:11:50 · 2934 阅读 · 0 评论 -
Unity相机跟随(死角切换坐标拍摄)
使用方法 介绍 Vector3.Lerp 修改float值得到A,B两个值的插值 方法思路 先获取摄像机和玩家的移动向量,从移动向量中得到距离从而用Lerp得到5个在移动向量中的 点储存进摄像机数组中,再从每个点判断该点射出一点射线是否可以射中玩家碰撞体再从射 线碰撞检测器中得到,如果射中的是玩家然后让相机插值移动过去。借用别的博主实例(Vector3详情)voidStar...原创 2022-01-13 20:58:32 · 780 阅读 · 0 评论 -
Unity(储存&读取玩家的基本信息)
1、生成一个a代码继承ScriptableObject的类用来储存信息1.1、并在头标签中用[CreateAssetMenu]来标记,目的是可以在Assets中能创建一个数据2、代码中所有变量都设置成为public,目的在面板中能显示,方便调试3、创建b代码并在代码中生成一个a代码的变量,并用属性来封装访问4、可以直接游戏对象身上需要判断伤害的代码中创建一个b代码的变量,用来获取a代码中的数据实例:...原创 2022-01-25 15:49:55 · 1880 阅读 · 0 评论 -
Unity(判断变化方法)
1、声明一个变量用于存储2、判断上一帧数跟当前帧数是否一致3、将当前帧的数保存进上一帧的数里用来下一帧判断原创 2022-01-17 17:57:53 · 1411 阅读 · 0 评论 -
Unity 使用柏林噪声函数构造出地面
简单版柏林噪声生成地形using UnityEngine;using System.Collections;[RequireComponent(typeof(MeshFilter))]/// <summary>/// 柏林噪音生成地形/// </summary>public class MeshGerrate : MonoBehaviour{ [Header("地面长度")] public int xSize = 1; [Header(转载 2022-02-22 16:46:42 · 528 阅读 · 0 评论 -
Unity(设置鼠标指针贴图)
使用方法Cursor.SetCursor(Texture 2D,Vector2(鼠标点击偏移量),CursorMode),原创 2022-01-23 20:03:36 · 1289 阅读 · 0 评论 -
Unity ( 快速判断语句 )
可以在变量后面接上?可以快速判断该变量是否为空?后面 · 的话代表如果不为空将执行的方法实例:OnMouseClicked?.Invoke() = if (OnMouseClicked != null ){ Invoke();}原创 2022-01-23 14:56:29 · 345 阅读 · 0 评论 -
Unity 防止数组索引越界的几种方法
%简介:如果一个数除以大于它的数那得到的余数(%)就是它本身 实例:1 ➗ 4 商:0 取余:1 2 ➗ 4 商:0 取余:2 3➗ 4 商:0 取余:3 2 ➗ 4 商:1 取余:0 总结:用取余符号得到的数就是取余这块的数// 数组int[] wayPoints = new int[4];// 索引...原创 2022-01-19 20:19:39 · 1528 阅读 · 0 评论 -
Unity (传方法参数&&Event委托方法)
先声明一个委托事件(Action)再到某个初始化方法中将这个委托当作参数写入进去实参不用声明委托直接填入一个方法即可原创 2022-01-07 17:15:12 · 1831 阅读 · 0 评论 -
Unity Resources(动态加载游戏对象)
前提:需要在Assets文件夹里创建一个Resources文件下用于访问方法:加载存储在"资源"文件夹中路径处的资源。 Load 加载文件夹中的所有资源或资源文件夹中路径处的文件。 LoadAll 路径:加载路径时相对路径默认就是在Resources文件夹下,在Resources文件夹中查找需要 的资源,如获取不到Resources文件夹则返回null ...原创 2022-01-06 18:24:23 · 1175 阅读 · 0 评论 -
Unity 显示时间(00:00)
有用两个新方法MathfMathf.CeiToInt (返回一个大于或等于输入值的最小整数)Mathf.RoundToInt (返回一个舍入的值,根据输入的值判断)String string.Format (将字符串中的一个或多个格式项替换为指定对象的字符串表示形式)本次方法的思想为 判断秒数和分数的字符串长度如果是1个单位长度的话就是小于10,反之则大于等于10// 将int类型转换为string类型stri...原创 2021-12-30 10:29:35 · 1026 阅读 · 0 评论 -
Unity(抛物线跳跃)
1、需要添加组件Off Mesh Link2、在玩家身上关闭Nav Mesh Agent中的Auto Traverse Off Mesh Link(自动分离路面导航)按钮3、添加代码(这里用的时插值) 直线移动transform.position = Vector3.Lerp( nav.currentOffMeshLinkData.startPos, nav.currentOffMeshLinkData.endPos...原创 2021-12-19 19:44:49 · 1424 阅读 · 0 评论 -
Unity(设置射线检测对象)
打开方式Edit ➡ Project Settings ➡ Physics Queries Hit Triggers(开启触碰器检测)原创 2021-12-24 20:12:59 · 824 阅读 · 0 评论 -
Unity(Invoke延迟方法)
Invoke 功能:隔一段时间之后,执行一个方法 方法:Invoke(String 方法名称,Float 时间间隔);原创 2021-12-13 22:06:44 · 611 阅读 · 0 评论 -
Unity(Input.GetAxis和Input.GetAxisRaw)
Input.GetAxis 描述:数值返回是慢慢向上加的 -1 -> 0.3 -> 1(类似于车慢慢加速的过程)Input.GetAxisRaw 描述:数值返回是固定的是 -1 -> 0 -> 1原创 2021-12-01 19:04:49 · 983 阅读 · 0 评论 -
Unity(如何把方形图片整成圆形)
1、需要两个Image2、一个换想要的图片,另一张换成原型图片3、把想要换的图片放入圆形图片的对象里变成他的子对象4、在圆形图片中添加Mask组件即可原创 2021-11-26 16:20:28 · 3363 阅读 · 0 评论 -
Unity(Transform和RectTransform)
RectTransform是继承Transform的 Transform用RectTransform的方法需要向下转型 (Transform as RectTransform) RectTransform也可以直接用Transform接收可以直接向上转型 Trasnform tr = GetComponent<RectTransform>();...原创 2021-11-26 15:39:05 · 764 阅读 · 0 评论 -
Unity (Transform和Vevtor3 的 forward 区别)
1、Transform.forward表示的是物体当前位置的前方 Vector3.forward表示的是世界坐标(0,0,1)2、当物体没发生旋转的时候 Transform.forward = Vector3.forward 都是向世界坐标的z轴前进3、当物体发生旋转后 Transform.forward != Vector3.forward 这是Transform.forward是朝着物体当前的前方移动 Vecto...原创 2021-11-11 17:35:49 · 1265 阅读 · 0 评论 -
Unity(射线指定或忽略某个指定层)
用途:判断。(在该球体范围内检查是否有别的碰撞物跟他碰撞) 返回值为bool 排除这个层级的物体方法:Physics.CheckSphere(Vector3,半径,~(1<<某个层级); 只招这个层级的物...原创 2021-11-16 19:22:23 · 3082 阅读 · 0 评论 -
Unity(材质模糊变清晰)
让他图片比例从1x1变成10x10(仅限地面)原创 2021-11-16 17:34:08 · 1263 阅读 · 0 评论