最糟糕的是人们在生活中经常受到错误志向的阻碍而不自知,真到摆脱了那些阻碍时才能明白过来。 —— 歌德说到UGUI的图集初学者可能觉得没什么难度,包括我刚开始接触的时候也是,甚至你在开发的时候只需要把图片导入到项目中,拖拖拽拽就能做出能用的东西来。因为UGUI刚出的时候就打出了“Unity会自动帮你维护图集”的旗号。可现实真的是这样的吗?要解释这个问题就需要从Unity4.6说起了,那我们来捋一下!
转载
2024-06-18 14:28:41
92阅读
Animator 中的 State 里有个可以勾选的属性叫 Write Defaults因为一直是默认勾选的,也没太当回事,现在发现是个很重要的玩意(其实就是Animator坑爹罢了,以后不要再用Animator里面的蜘蛛网写2D逐帧动画了,自己写个状态机不香吗?一个常见的例子就是假如我想有多个可能的状态作为 Default State如官方图然而令人智熄的是官方的这个图根本无法实现(bug?目前
转载
2024-04-06 12:44:14
60阅读
Deferred Decal(延迟贴花效果)本文参考博客:Unity Shader-Decal贴花(SelfDecal,Alpha Blend,Mesh Decal,Projector,Deferred Decal) 一说到延迟,我首先想到的就是延迟渲染,要理解这个延迟贴花效果就得先理解延迟渲染的过程。延迟渲染大体先上就是先将场景的顶点位置、颜色、法线(都转换到世界空间)渲染到到GBuffer中(
转载
2024-04-13 10:09:38
258阅读
一、延迟销毁游戏对象 默认情况下,使用 Destroy() 方法会立即销毁游戏对象,如果想延迟一段时间再销毁,可以在这个方法中传递一个时间参数。1 Destroy(gameObject, 2.5f); 这段代码实现的效果就是经过 2.5 秒后销毁游戏对象。二、获取一个随机布尔值我们知道 Random.value 能够返回 0~1 之间的随机数,所以让此随机数与 0.5f 进行比较,就能够
转载
2024-02-20 12:59:29
341阅读
延迟渲染延迟渲染渲染下,光源计算的消耗的消耗和光源占屏幕的范围(像素)相关,而不是像正向渲染中,和光源照射的物体数量相关。延迟渲染也分为2个Pass(不在同一个shader里)GBuffer Pass(Defferred Pass):这个pass写在想要支持延迟渲染的游戏物体的shader里,和正向渲染不同,Gbuffer会渲染输出4份贴图(如果用了混合光照还有第五份)RT0, ARGB32 fo
转载
2024-06-08 14:05:43
64阅读
注意 此 Invoke unity的接口方法,不是 .net里的 invoke 方法, 场景遇到需要间隔一段时间再来调用的情况,如果不想用协程,可以使用 Invoke()实现。MonoBehaviour.Invoke 延迟调用 方法签名: void Invoke(string methodName, float time
转载
2024-04-20 11:01:40
123阅读
延迟函数 Destroy(object , float time):time时间之后销毁object类型Destroy(this.gameObject, 3.5f); Invoke:延迟函数,通过方法名延迟调用对
转载
2024-03-18 08:37:51
141阅读
for (int i = go.childCount - 1; i >= 0; i--) {//方式五,正确删除所有子结点 GameObject.DestroyImmediate(go.GetChild (i).gameObject); }
转载
2017-04-07 19:07:00
106阅读
2评论
1.Awake 用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如GameObject.FindWithTag()这样的函数搜索它们。每个游戏物体上的Awake以随机的顺序被调用。因此,你应该用Awake来设置脚本间的引用,并用Start来传递信息A
转载
2024-07-22 15:05:15
95阅读
一、Coroutine(协程)的概念和本质在网上的一些资料当中,一直将Coroutine当作一个线程来描述,这样是不准确的。因为Coroutine并不是一个新的线程,它仍旧是属于主线程的一部分。Coroutine本质上是一种轻量级的thread,它的开销会比使用thread少很多。多个Coroutine可以按照次序在一个thread里面执行,一个Coroutine如果处于block状态
转载
2024-03-24 13:34:43
66阅读
使用Destroy删除游戏物体,游戏物体并不会立即被删除,而是异步执行的,不会影响主线程的执行,这点很重要。 使用DestroyImmediate删除游戏物体,游戏物体立即被删除,代码顺序执行,影响主线程的执行。 ...
转载
2021-10-29 08:57:00
1298阅读
2评论
场景中新建几个物体,运行后比较两次输出using UnityEngine;public class Test : MonoBehaviour{ public GameObject[] gos; private void Awake() { //使用Destroy for (int i = gos.Length - 1; i >= 0; i--) { Destroy(gos[i]);
原创
2021-07-08 15:46:09
1105阅读
场景中新建几个物体,运行后比较两次输出using UnityEngine;public class Test : MonoBehaviour{ public GameObject[] gos;
原创
2022-01-25 11:55:36
653阅读
using UnityEngine; using System.Collections; public class Test_Ping : MonoBehaviour { public string IP = "123.125.114.144"; Ping ping; float delayTime; void Start() { S...
转载
2019-04-30 15:18:00
505阅读
2评论
Unity最重要的功能之一是可以让用户选择具体的渲染路径。对于那些不是很熟悉Unity的用户来说,(通常情况下)在前向渲染路径和延迟渲染路径做一个宣发就好比在“一个正常的渲染方法”和“某个看起来就很奇怪的方法”之间做选择一样。为了更好的理解为什么这里要有多个渲染路径进行选择,首先你需要理解这些设置背后的动机。所有的渲染路径的核心都是光照的处理光照的计算是非常昂贵的,主要是因为当物体被光照到的时候有
转载
2024-10-11 18:50:00
77阅读
2.03.03 延迟函数 闭包 this1.延迟函数延迟函数是在window对象下的函数用法:setTimeout 延迟函数
调用者:window参数:a.匿名函数 b.毫秒返回值: 数字 1功能:仅仅执行一次匿名函数//1.延迟函数 仅仅在设置的时间后执行一次就不会执行了
var count = 2;
var d = window.setTimeout(function(
渲染路径渲染路径(Rendering Path)决定了光照是如何应用到Unity Shader中的,如果我们没有指定正确的渲染路径,那么一些光照变量很可能不会被正确赋值,我们计算出的效果也就很有可能是错误的 在Graphics中可以为整个项目设置渲染路径,默认为前向渲染 可以使用多个渲染路径,例如相机A使用前向渲染路径,而相机B使用延迟渲染路径。这时可以设置每个相机的渲染路径,以覆盖Project
以下所有内容在unity5.6.2测试。如果是之前版本,不能保证可行型。因为程序需要,需要使用unity加载网络的MP3音乐,但是网上一查。发现已有的结论是无法直接解析MP3,需要使用其他的库将MP3转换为wav,ogg等其他格式。但是我看文章的发表日期也十分久远,心想,MP3这种全世界使用最多的音乐格式,unity没有理由不支持啊。终于在仔细的后发现了其支持mp3的蛛丝马迹。如图,是unity支
转载
2024-02-23 19:44:28
121阅读
关于在Spring 容器 初始化和销毁 bean 前所做的操作有三种方式定义:第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化后和销毁bean之前进行的操作第二种:通过bean实现InitializingBean和 DisposableBean接口第三种:通过 在xml中配置init-method 和 destory-method方法,或者 配置@Bean
转载
2023-07-21 15:01:46
413阅读
unity buildin deferred pipeline
rt0 albedo
rt1 spec
rt2 normal
rt3 emissive
rt4 shadowmask
rt3的使用方式
gbuffer3
在reflectiontoemissive pass作为rtv
blend one one
lightpass srv bind了 gbuffer 0124 &dep
转载
2019-03-21 17:22:00
142阅读
2评论