Unity
文章平均质量分 58
KeithPro
入门级软件工程师
展开
-
Unity UI内存泄漏优化
通过对内存进行快照,分析图集的引用链,屏蔽代码,重新快照测试,一次次的测试,慢慢缩小代码范围,定位图集不销毁的原因,最终发现原来是我们的UI使用了static实例来实现单例效果,在其他地方调用,但是在我们UI不需要的时候并没有将这个静态单例设置为null,导致整个UI资源的相关引用一直存在,无法释放,还有就是我们在对按钮进行事件注册的时候,使用了项目封装的接口,而项目封装的接口在拿到委托事件对象后,并没有在移除事件的时候去清除委托事件对象,导致引用一直存在,相关的资源也就无法释放。原创 2023-08-16 12:02:09 · 2015 阅读 · 0 评论 -
Unity中批量修改图片导入设置及修改图集的设置
Unity中批量设置图片导入设置,编辑器扩展原创 2022-11-22 16:45:05 · 4858 阅读 · 3 评论 -
Unity中实现动画数据导出导入
using System;using System.Collections;using System.Collections.Generic;using System.IO;using System.IO.Compression;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Xml.Serialization;using Unit原创 2022-11-08 18:56:59 · 3955 阅读 · 1 评论 -
Unity实现相机漫游功能
创建一个相机,挂载这个脚本即可public class FilmPlaybackMgr{ Camera wanderCamera; bool isWanderCam = false; int CameraIndex = 1; /// <summary> /// 玩家输入控制 /// </summary> Vector2 userInput = Vector2.zero; Vector2 mouseDelta =原创 2022-03-28 17:42:10 · 7580 阅读 · 2 评论 -
Unity中对象池技术管理大量生成的对象
生活就像大海一样一望无际,却又充满希望原理 一个字典存储所有需要生成的对象队列,通过枚举值判断当前生成的对象类型 当需要生成新对象的时候根据类型去从字典中对应列表中查找空闲对象并返回, 如果对应列表中为空则需要实例化一个当前对象, 在回收的时候将对象存到字典中对应的列表中去供下次生成时候使用。 [Header("需要生成的对象")] public List<GameObject> DynamicLoadObject;...原创 2022-02-07 21:04:04 · 2588 阅读 · 0 评论 -
Unity同版本编辑器在不同VS版本下会报错问题解决
通常一个Unity项目在同一版本不同电脑或者不同VS版本情况下打开,VS可能会出现报错像Unity脚本识别不到的情况,这时候可以通过下面这种方式解决。在次记录一下,防止自己过几年会忘掉,毕竟这脑子笨啥都记不住。打开Unity --->Preferences--->External Tools然后点击:Regenerate project files...原创 2022-01-27 21:12:16 · 4423 阅读 · 0 评论 -
Unity中如何通过UI显示3D模型解决方案?
需求:实现将3D模型显示在2DUI上面,实现王者荣耀英雄商城之中英雄展示功能,3D模型可以旋转,添加特效等正常3D功能。 使用RenderTexture和RawImage做相机映射 使用ScreenSpace Camera渲染摄像机 使用世界空间的UI和模型绑定 使用RenderTexture 和RawImage做相机映射效果:实现:Project面板创建一个RawImage 创建一个Camera,通过设置渲染模式控制模型显示的 创建一个Re..原创 2022-01-08 20:12:09 · 9601 阅读 · 4 评论 -
Unity简单第一人称移动和摄像机旋转
美女镇文图片没找到,请重新加载两个对象,一个当前需要移动的物体,一个摄像机物体,摄像机物体放到移动物体子物体下,然后两个脚本分别挂在到对应物体上,组件对象见图:角色移动脚本:using System.Collections.Generic;using UnityEngine;public class FirstPersonMovement : MonoBehaviour{ public float moveSpeed = 5; [Header("Runn..原创 2021-11-29 09:53:18 · 5147 阅读 · 2 评论 -
Unity2018.3.14配置SDK所碰到的问题
天气晴朗,心情美好,打开我心爱的notebook,开始我的兴趣创作,今天的任务是要打包一个APK文件。OK,打开Unity2018.3.14开始Build项目,Error!!!What?TryAgain!!!Error!!!他喵的怎么出问题了,以前都好着啊(安慰自己这样说,其实以前好像也没试过)。系统提示SDK版本太低小于28.0.3,大概意思可能是SDK版本太低(其实是Build Tools版...原创 2020-04-22 17:49:52 · 1340 阅读 · 0 评论 -
Shader学习记录
Shader(着色器): 它的作用可以简单理解为给屏幕上的物体画上颜色。而什么东西负责给屏幕画上颜色呢?当然是GPU,所以我们写Shader的目的就是告诉GPU往屏幕哪里画、怎么画。实际上它就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及...原创 2019-11-18 01:21:29 · 738 阅读 · 0 评论 -
已知入射向量和法线求反射向量
今天在工作中碰到一个问题,已知一个入射单位向量和发现向量如何求出反射单位向量,看到篇文章写的挺好,特地转过来记录下,地址:求反射向量求反射向量在图形学中,计算光照模型时,经常需要求取反射向量,一般的shader函数库都提供计算反射向量的方法,下面介绍一下如何手动计算反射向量。给定入射光线向量I和平面法向量N,求反射向量R,如下图。为了方便计算,这里假定I和N都是单位向量(模为1,编程时...转载 2019-10-28 13:48:11 · 13541 阅读 · 2 评论 -
Unity中使用LineRenderer实现鼠标点击移动场景中画线
使用Unity原生LineRenderer+Edge Collider2D实现在2D场景中画线并带碰撞体。我们先来看看效果实现思路,当鼠标点击的时候开始在当前位置实例化LineRenderer对象,然后移动的过程中记录移动的点并赋值给LineRenderer中的Positions属性动态修改LineRenderer的形状和长度。碰撞器方面使用Edge Collider 2D通过类...原创 2019-10-17 16:44:55 · 2426 阅读 · 1 评论 -
Unity面试题整理(一)
内容网上搜集,旨在记录整理Unity的面试题,为面试做好准备。白底黑字看的太难受了,加点颜色。目录AssertBundle基本理论AssertBundle资源加载框架设计Awake()和Start区别Csharp属性访问器Profile性能优化基础SerializeField的用法UGUI事件系统UGUI渲染层级UI框架设计Unity5如何进行Asset...原创 2019-07-19 10:58:40 · 29766 阅读 · 7 评论 -
Unity面试题整理(二)
目录Unity基于事件机制的消息系统Unity委托Unity工具类系列之对象池Unity消息机制Unity游戏客户端通用框架设计Unity的UI层级管理框架Unity缓存池Unity脚本加载和编译Unity设计模式C#基础Unity基础Unity委托Unity小型游戏寻路算法Unity框架设计unity游戏音效unity的UI渲染机制...转载 2019-07-22 10:53:52 · 1978 阅读 · 0 评论 -
Unity2019.3之如何生成和加载AssetBundle包
生成AssetBundle新建一个Cube和Capsule,命名如图然后生成预制体,新建AssetBundle新建一个Editor文件夹(这个是必须的),然后在目录下创建C#脚本:using UnityEditor;using System.IO;public class CreateAssetbundles:Editor{ [MenuItem("Ass...转载 2019-07-23 14:26:17 · 3090 阅读 · 0 评论 -
记录学习Invoke方法的具体用法
Invoke()用法(usage):public void Invoke(string methodName,float time);参数(Parameter):methodName:string 类型的方法名。 time:执行方法的时间。Official Explaining:Invokes the method methodName in time seconds.官方解释...原创 2019-08-11 11:26:45 · 732 阅读 · 0 评论 -
Unity中OnDrawGizmos()方法和OnDrawGizmosSelected()方法
记录一下Unity中OnDrawGizmos()和OnDrawGizmosSelected()使用方法函数OnDrawGizmos()在程序一运行就执行,之后每帧都在执行,函数OnDrawGizmosSelected()在鼠标打击到脚本挂载的物体的身上的时候运行,代码示例: /// <summary> /// 随程序启动运行 /// </su...原创 2019-10-11 16:04:50 · 24046 阅读 · 1 评论