unity学院
基于unity和C#进行Vr虚拟现实开发,虚拟仿真软件开发,游戏开发!
展开
-
拖尾渲染器-Unity拖尾渲染器的使用
添加拖尾渲染器组件:在Unity编辑器中,选中需要添加拖尾效果的游戏对象,然后点击菜单栏上的"Component" -> “Effects” -> “Trail Renderer”,即可为该游戏对象添加拖尾渲染器组件。控制拖尾效果:可以通过脚本控制拖尾效果的启用和禁用,以及修改拖尾的位置和速度等属性。例如,可以在物体移动时启用拖尾效果,通过修改拖尾的位置和速度属性来实现拖尾效果的变化。调整拖尾渲染器属性:在Inspector面板中,可以对拖尾渲染器的属性进行调整。原创 2024-04-22 22:01:37 · 170 阅读 · 0 评论 -
LOD2-Unity中Shader LOD技术原理以及使用
Shader LOD(Level of Detail)是Unity中用于优化渲染性能的一种技术。它通过在不同的距离或屏幕空间中使用不同的着色器来控制模型的细节级别,从而减少GPU的工作量。Shader LOD的原理是根据相机与物体之间的距离来选择合适的着色器。在远离相机的情况下,使用简化的着色器,减少细节和计算量;而在靠近相机的情况下,使用更复杂的着色器,增加细节和真实感。原创 2024-04-19 19:52:39 · 281 阅读 · 0 评论 -
灯光3-静态光照烘焙技术
它通过在场景中预计算光照信息,并将其存储在纹理或数据结构中,以便在运行时进行渲染。这种技术可以提供更真实的光照效果,并且可以在较低的运行时成本下实现。烘焙光照:在静态光照模式下,需要进行光照烘焙。静态光照烘焙技术的优点是可以提供高质量的光照效果,并且可以在较低的运行时成本下实现。设置光照模式:在UNITY中,可以选择使用实时光照或静态光照。静态光照模式适用于场景中的静态物体,而实时光照模式适用于动态物体。这样可以获得更真实的光照效果,并且可以在较低的运行时成本下实现。原创 2024-04-16 20:56:07 · 117 阅读 · 0 评论 -
灯光2-各种灯光的性能消耗
在设计场景时,需要根据实际需求合理使用不同类型的灯光,并注意控制灯光的数量和范围,以保证游戏的性能表现。Unity中的灯光是实现场景照明效果的重要组成部分,不同类型的灯光在性能消耗上有所差异。:矩形灯光是一种类似于点光源的灯光类型,但是其光照范围为矩形形状。矩形灯光对性能的消耗较高,特别是当矩形灯光数量较多或者范围较大时。它对性能的消耗相对较低,适用于需要模拟室内灯光或者局部照明效果的场景。:方向光源是一种平行光线,类似于太阳光的灯光类型。它对性能的消耗相对较低,适用于需要模拟室外自然光照明效果的场景。原创 2024-04-15 20:20:28 · 59 阅读 · 0 评论 -
灯光1-灯光与阴影的关系
如果有其他物体位于光源和被照物体之间,这些物体会阻挡部分光线,从而在被照物体的背后形成阴影。阴影可以给场景增加深度和真实感,使得物体之间的相对位置和形状更加清晰可见。在计算机图形学中,通过使用不同的算法和技术来模拟灯光和阴影效果。这些方法可以根据光源的属性和场景中物体的几何形状来计算出阴影的位置、强度和形状。通过设置不同的灯光属性和位置,可以产生各种不同的光照效果,其中之一就是阴影。总结一下,灯光与阴影之间的关系是通过模拟现实世界中的光照情况来产生阴影效果,从而增加场景的真实感和深度。原创 2024-04-12 19:32:13 · 49 阅读 · 0 评论 -
模型4-掌握基于模型替换的角色换装技术
基于模型替换的角色换装技术是一种在游戏开发中常用的技术,它允许玩家在游戏中更改角色的外观,而无需修改角色的基本功能和行为。这种技术通过替换角色模型的方式实现。通过基于模型替换的角色换装技术,玩家可以在游戏中自由选择不同的角色外观,增加了游戏的可玩性和趣味性。原创 2024-04-11 19:10:06 · 166 阅读 · 0 评论 -
渲染系统1-掌握摄像机与渲染之间的关系
在渲染过程中,摄像机的位置、朝向和投影方式对最终的渲染结果产生重要影响。摄像机的位置和朝向决定了观察者所处的视角,不同的视角会呈现出不同的场景效果。摄像机与渲染之间有密切的关系。摄像机是用于捕捉场景的设备或者虚拟相机模拟器,它决定了我们在渲染过程中看到的视角和透视效果。这些参数可以影响渲染结果中的景深效果,使得前景和背景的模糊程度不同,增加了真实感。总之,摄像机与渲染之间的关系是通过摄像机的位置、朝向、投影方式以及其他参数来决定最终渲染结果中的视角、透视效果和景深效果。原创 2024-04-09 19:16:25 · 48 阅读 · 0 评论 -
UGUI源码分析与研究2-从底层实现的角度去分析和调优UI的性能问题和疑难杂症
从底层实现的角度去分析和调优UI的性能问题和疑难杂症,可以从以下几个方面入手::UI的绘制是一个重要的性能瓶颈,可以通过以下方式进行优化::UI布局也是一个影响性能的关键因素,可以通过以下方式进行优化:内存管理优化。原创 2024-03-19 19:38:49 · 371 阅读 · 0 评论 -
UGUI界面性能优化2-最大程度降低UI的DrawCall和重绘
降低UI的DrawCall和重绘是优化UI性能的重要手段,可以提升应用的流畅度和响应速度。使用虚拟化技术:对于大量重复的UI元素,可以使用虚拟化技术进行优化,只绘制可见区域内的元素。使用缓存:对于频繁变动的UI元素,可以将其缓存为静态纹理,只在需要更新时重新绘制。减少透明度:透明度较低的UI元素会增加重绘次数,尽量减少使用透明度较低的元素。使用遮罩:遮罩可以限制UI元素的绘制区域,减少不必要的绘制。预渲染:将静态的UI元素提前渲染为纹理,减少动态绘制的次数。原创 2024-03-17 20:00:33 · 262 阅读 · 0 评论 -
Lua-Lua与C的交互3
然后,在Lua脚本中使用require函数加载对应的C模块,并通过调用注册的函数来实现与C语言的交互。然后,通过API函数获取Lua脚本中定义的函数,并传递参数调用该函数。通过这些API函数,C语言可以将数据传递给Lua脚本,调用Lua脚本中定义的函数,并获取返回值。Lua与C的交互是指在Lua脚本中调用C语言编写的函数或者在C语言中调用Lua脚本中定义的函数。总结一下,Lua与C的交互可以通过Lua提供的API函数实现,包括在Lua脚本中调用C语言编写的函数和在C语言中调用Lua脚本中定义的函数。原创 2024-03-16 10:02:35 · 264 阅读 · 0 评论 -
并发编程1-多线程并发编程的基本概念
线程安全:线程安全是指多个线程同时访问共享资源时,不会出现数据竞争和不一致性的情况。死锁:死锁是指多个线程因为互相等待对方释放资源而无法继续执行的状态。:线程是程序中的执行单元,它可以独立运行,并拥有自己的栈、寄存器和程序计数器。共享资源:多个线程可以同时访问和操作共享资源,如内存、文件等。同步:同步是指协调多个线程之间的执行顺序,以保证数据的正确性和一致性。:并发是指多个线程同时执行的状态。通过并发编程,可以使得多个任务在同一时间段内并行执行,提高程序的效率。原创 2024-03-13 20:06:03 · 264 阅读 · 0 评论 -
多媒体技术3-动画基础和音视频处理的基础概念
编码:音频和视频的编码是指将采集到的数字信号转换为压缩格式的过程。帧率:帧率是指每秒播放的图像帧数。缓动:缓动是指在动画中使用不同的速度曲线来改变物体的运动方式。采集:音频和视频的采集是指通过麦克风、摄像头等设备将声音和图像转换为数字信号的过程。解码:音频和视频的解码是指将编码后的数据解压缩为原始数据的过程,以便于播放或编辑。编辑:音视频编辑是指对音频和视频进行剪辑、合并、特效处理等操作,以达到所需的效果。输出:音视频输出是指将编辑好的音频和视频导出为最终的文件格式,如MP4、AVI等。原创 2024-03-12 20:11:53 · 143 阅读 · 0 评论 -
多媒体技术1-颜色在计算机中的表示
其中0表示最小亮度(没有颜色),255表示最大亮度(全亮)。通过调节三个通道的取值,可以得到不同的颜色。例如,纯红色可以表示为(255, 0, 0),纯绿色可以表示为(0, 255, 0),纯蓝色可以表示为(0, 0, 255)。常用于打印颜色,HSL模型(色相、饱和度、亮度)常用于图形编辑软件。不同的颜色表示方式适用于不同的应用场景。除了RGB模型,还有其他表示颜色的方式,比如。在RGB模型中,每个颜色通道的取值范围是。在计算机中,颜色通常使用。原创 2024-03-11 19:19:14 · 235 阅读 · 1 评论 -
计算机基础1-汇编基础
在汇编语言中,指令由一系列助记符(mnemonic)组成,用于执行特定的操作,如数据传输、算术运算和控制流程等。常见的寄存器有通用寄存器(如AX、BX、CX等)、标志寄存器(如FLAGS)和指令指针寄存器(如IP)等。:汇编语言中的指令用于执行特定的操作,如数据传输、算术运算和控制流程等。栈是一种后进先出(LIFO)的数据结构,用于存储函数调用时的局部变量和返回地址等。:标号用于标识程序中的某个位置,跳转指令可以根据条件或无条件地转移到标号所在的位置,从而改变程序的执行流程。原创 2024-03-11 19:14:12 · 125 阅读 · 0 评论 -
计算机组成原理3-计算机执行指令的过程
一台计算机所能执行的各种不同指令的全体,叫做计算机的指令系统,每一台计算机均有自己的特定的指令系统,其指令内容和格式有所不同。按照程序规定的次序,从内存储器取出当前执行的指令,并送到控制器的指令寄存器中,对所取的指令进行分析,即根据指令中的操作码确定计算机应进行什么操作。储器取出当前执行的指令,并送到控制器的指令寄存器中,对所取的指令进行分析,即根据指令中的操作码确定计算机应进行什么操作。指令的顺序执行,将完成程序的执行,因而有必要[2] 了解指令的执行过程。计算机执行指令的过程分析。原创 2024-02-29 22:09:10 · 157 阅读 · 0 评论 -
计算机组成原理2-冯诺依曼结构
要注意,内存中的数据和地址码都是二进制数,但是俩者是不同的,一个地址可以指向一个存储单元,地址是存储单元的位置,数据是存储单元的内容,数据可以是操作码、可以是CPU要处理阿数据、也可以是数据的地址,地址码的长度由内存单元的个数确定。概括的来讲,冯.诺依曼结构消除了原始计算机体系中,只能依靠硬件控制程序的状况(程序作为控制器的一部分,作为硬件存在),将程序编码存储在存储器中,实现了可编程的计算机功能,实现了硬件设计和程序设计的分离,大大促进了计算机的发展。,这样计算机就可以调用存储器中的程序来处理数据了。原创 2024-02-29 21:54:12 · 75 阅读 · 0 评论 -
Coroutine 协程名称couldn‘t be started because the the game object 游戏物体 is inactive报错
报错的主要原因是当协程还没运行完毕时脚本或游戏物体的enabled为fase,隐藏掉了.解决办法:判断,当当前的游戏物体激活时执行协程。StartCoroutine(“协程名称”);原创 2024-01-11 10:48:49 · 526 阅读 · 0 评论 -
UGUI不规则响应区域(例如多个按钮重叠,避免点击错误)
3、然后在代码中将「Image」组件中的「alphaHitTestMinimumThreshold」属性设置为0.1。这样图片的透明度低于0.1的地方就不会响应点击事件。4、但这种方式存在一个问题:如果将图片的「Read/Write」开启的话,图片所占用的内存会大幅度增加,且该图片将无法被并入图集。1、UI的默认响应区域是UI元素所在的矩形框线内的区域。这也就意味着,当UI的图形为不规则形状时,点击图形的外部也可能会触发事件。要想使用它,我们首先要将精灵的「Read/Write」属性设置为开启状态。原创 2023-10-12 09:57:19 · 562 阅读 · 0 评论 -
C#声明一个带返回值的委托
(这里添加监听使用了表达式Lambda,参考C#语法小知识(十二)匿名方法与Lambda表达式)这里会打印hhhh3,也就是最后一个监听的返回值。原创 2023-08-07 17:04:18 · 859 阅读 · 0 评论 -
新版2021等启动unity包管理器本地服务器进程失败解决
1、问题2、解决办法。原创 2023-07-11 23:35:41 · 443 阅读 · 0 评论 -
unity打开外部目录 (例如一个文件夹或者文件目录)
文件的路径和名称(比如:C:\Users\Administrator\test.txt)</param>/// <param name="filePathAndName">文件的路径和名称(比如:C:\Users\Administrator\test.txt)</param>/// <param name="folderPath">目录路径(比如:C:\Users\Administrator\)原创 2023-06-14 15:59:52 · 2306 阅读 · 0 评论 -
Unity出现No Sprite Editor Window registerd
2,在 unity 的Window面板下面,将Package Manager添加如下。原创 2023-05-15 10:39:06 · 469 阅读 · 1 评论 -
Unity结合大话设计模式8—代理模式
7、总结,代理模式的应用场景。原创 2023-04-27 11:31:00 · 189 阅读 · 0 评论 -
Unity计算2个物体之间距离 (2个三维向量之间)
方法2。原创 2023-04-05 15:14:45 · 1423 阅读 · 0 评论 -
C#求数组中最小/大值及其下标
Console.WriteLine("最大值{0} 下标{1} 最小值{2} 最小值下标{3}", max, countMax, min, countMin);// Console.WriteLine("依次输入十个数(提示:用逗号隔开):");原创 2023-03-25 19:12:23 · 1041 阅读 · 0 评论 -
《流沙聚散莫离忧》
记2023.3.10夜于家中。山一程,水一程,身向榆中那畔行。觥一盅,盏一盅,醇酒难诉离别情。天未明,相送盈,儿女沾巾今始铭。近长亭,曲蜒径,折柳无奈难留行。天渐明,校门庭,忆中郎朗读书声。研路中,求学精,不悔不负今此生。山分棱,叶飘零,天各一方仍为朋。艰难中,玉汝成,共赴明朝锦绣程。风一程,雪一程,日后江湖再相逢。原创 2023-03-10 17:51:30 · 137 阅读 · 0 评论 -
unity的Rendertexture上面显示粒子特效最便捷的解决方案
一、为什么不显示1.为什么粒子特效也不显示?不显示是正常的,因为当前为背景的点设置为A为0时已经被剔除,当前位置粒子特效的颜色也会被剔除。因为clip发生在融合blend之前,blend发生在所有颜色输出之后的帧缓存。2.为什么NGUI的Unlit/Premultiplied Colored的shader能正常显示半透明粒子?主要是因为使用了Blend One OneMinusSrcAlpha// 源rgba*1 + 背景rgba*(1-源A值)这样就融合了源的A和背景的A,所以原创 2023-02-24 11:24:29 · 1644 阅读 · 0 评论 -
Scroll滚动条:位置重置到初始位置
用于场景:UGUI开发时候,经常会遇到一个问题,滚动条拉倒某个位置时候,再次进入时候,滚动条还在原来位置,怎么解决?Panel_Content.GetComponent<RectTransform>().localPosition = new Vector3(1403,0,0);原创 2023-02-12 10:43:48 · 1258 阅读 · 0 评论 -
unity判断是否点击到某个按钮
1、适应场景:当点击到界面其他地方,这个按钮不再突出显示,怎么解决?private void Update() { if (Input.GetMouseButtonDown(0)) { if (EventSystem.current.currentSelectedGameObject == null || EventSystem.current.currentSelectedGameObject.name != "But原创 2023-02-11 18:03:42 · 2347 阅读 · 0 评论 -
unity下载大文件(例如.mp4视频或者png图片)优化部分,采用文件流方式
1.unity客户端2.服务器端原创 2023-01-09 15:43:48 · 631 阅读 · 0 评论 -
unity上传大文件(例如.mp4视频/png图片)优化部分,采用文件流方式
1.unity客户端2.服务器端原创 2023-01-06 16:19:13 · 1501 阅读 · 2 评论 -
来谈谈C#多线程开发:并行,并发与异步编程
1、前言现代程序开发过程中不可避免会使用到多线程相关的技术,之所以要使用多线程,主要原因或目的大致有以下几个:1、 业务特性决定程序就是多任务的,比如,一边采集数据、一边分析数据、同时还要实时显示数据;2、 在执行一个较长时间的任务时,不能阻塞UI界面响应,必须通过后台线程处理;3、 在执行批量计算密集型任务时,采用多线程技术可以提高运行效率。传统使用的多线程技术有:Thread & ThreadPoolTimerBackgroundWorker目前,这些技术都不原创 2022-12-09 16:47:34 · 839 阅读 · 0 评论 -
c#扩展方法
1、前言:通常,我们想要向一个类型中添加方法,可以通过以下两种方式:修改源代码。在派生类中定义新的方法。但是以上方法并不是万能的,我们并不能保证拥有一个类型的源码,也并不能保证这个类型可以让我们继承(如结构,枚举,String等等)。但是C#提供了一个办法,那就是扩展方法,使用扩展方法可以直接向现有的类型“添加”方法,无需修改类型的源码,也无需用一个派生类实现2、什么是扩展方法一、什么是扩展方法?扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式原创 2022-12-09 16:24:16 · 742 阅读 · 0 评论 -
unity项目加密(比如到指定时间,项目打不开)
// Use this for initializationvoid Awake(){ Debug.Log("加密"); i = PlayerPrefs.GetInt("miwen"); if (i > 20) { // Application.Quit(); } i++; PlayerPrefs.SetInt("miwen", i);}// Update is called once per frame原创 2022-12-01 10:12:45 · 1207 阅读 · 1 评论 -
C#异步多线程Task.Run 和Task.Factory.StartNew 区别
Task.Run 和 Task.Factory.StartNew 区别:1、Task.Run 是在 dotnet framework 4.5 之后才可以使用, 2、Task.Factory.StartNew 可以使用比 Task.Run 更多的参数,可以做到更多的定制。3、可以认为 Task.Run 是简化的 Task.Factory.StartNew 的使用,除了需要指定一个线程是长时间占用的,否则就使用 Task.Run。3.1成功案例4、创建新线程下面来告诉大家使用两个函原创 2022-11-25 17:22:19 · 2022 阅读 · 0 评论 -
C#UI线程和线程池线程之间通讯taskscheduler.FromCurrentSynchronizationContext()
如何在UI线程和线程池线程之间通讯。一般来说,UI线程拥有的对象,其他线程是无法操作的。但是.Net有一个很重要的抽象对象——TaskScheduler(任务调度器)。它协调着不同任务(线程)的运行,使得线程池中的线程有了操作UI线程的可能。在我以前不知道OberservableCollection和WPF开发的时候,都是要么使用 Invoke方法,要么就是使用TaskScheduler。这篇文章我们就主要介绍一下TaskScheduler这个对象。本篇的例子依然来源于《C#多线程编程实例》(其实我这个系列原创 2022-11-25 16:13:01 · 460 阅读 · 0 评论 -
unity和C#的多线程 Thread的IsBackground属性,详解
Thread的IsBackground = true;//主程序结束后,线程随之结束【日常要用到的】Thread的IsBackground = false;//主程序结束后,线程不会随之结束案例1、using System;using System.Threading;namespace ConsoleApp1{ class Program { static void Main(string[] args)原创 2022-11-25 11:55:23 · 1064 阅读 · 0 评论 -
代码简洁之道_第一篇String类Startswith运用
startsWith() 方法用于检测字符串是否以指定的子字符串开始。如果是以指定的子字符串开头返回 true,否则 false。startsWith() 方法对大小写敏感。原创 2022-11-25 11:31:36 · 592 阅读 · 0 评论 -
Linq查询系列操作符详解(例如First、FirstOrDefault、Any、Contains等)
介绍 ·First - 返回集合中的第一个元素;不延迟 ·FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟 ·Last - 返回集合中的最后一个元素;不延迟 ·LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值) ·ElementAt - 返回集合中指定索引的元素;不延迟 ·ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟 ·Conta原创 2022-11-25 10:47:05 · 697 阅读 · 0 评论 -
unity和C#以及Linq(结合Linq整理的一些高级写法Exists,from in where select等)
1、按照条件查询:from in where select 的用法// 例如:获取某班级所有男生成绩总和int scoreSum = (from student in classStudents where student.gender == "男" // where:查询条件 select student.score).Sum(); // select:选择对象// 找出班级内所有男生boys=(from stud cl原创 2022-11-24 18:39:59 · 966 阅读 · 0 评论