- 博客(53)
- 收藏
- 关注
转载 Unity 透明混合为什么要关闭深度写入
除了半透明物体之间的问题,尽管理论上来说,理想情况下半透明物体应该在所有不透明物体渲染完之后再渲染,但如果一个不透明物体因为某些原因在某个半透明物体后面被渲染了,也可能会因为半透明物体开启了深度写入而出现非常明显的渲染错误(不透明物体被半透明物体完全遮挡掉没有渲染)。由于需要手动排序半透明的物体,写入深度已没有意义。回到你的图里,由于你的两个方块摆放规则不存在相互重叠,所以Unity对于两个物体的排序在pixel level也是正确的排序,即每个像素也都是满足从后往前渲染的,所以你不会发现问题。
2023-10-31 11:26:26
252
转载 Unity常用[xxx]用法 特性
标记字段[Space] 可以与上面形成一个空隙,可以带参数[Space(30)][Header(“XXX”)] 在Inspector面板上给定义的字段的上一行加段描述,可以将属性隔离开,形成分组的感觉[Tooltip(“XXX”)] 给一个变量添加这个属性后,在Inspector面板将鼠标悬停在该变量上可以显示提示[Range(min, max)]` 限制数值变量的取值范围并以滑动条显示在Inspector中[Min(min)] 限制一个 float,int 类型的变量的最小值
2021-10-13 13:35:48
307
转载 Unity实时阴影实现——Cascaded Shadow Mapping
前言Unity内置的方向光实时阴影技术是Cascaded Shadow Mapping(简称CSM)。 由于Unity封装的原因,可能并不能满足实际项目实时阴影的需求,但我们可以从Unity开源出来的built-in shaders看出一些实现细节,这些可以作为自定义实现CSM的参考。简述Perspective aliasing in a shadow map is one of the most difficult problems to overcome. In the technical art
2021-05-31 20:02:34
2564
转载 Unity URP/SRP 渲染管线浅入深出【匠】
目录 SRP/URP/HDRP之间的关系 SRP是什么? URP是什么? HDRP是什么? 2. 为什么诞生SRP? 3. URP 和 内置渲染管线 性能对比 1. 首先来说说光照处理部分 2. 接下来看看SRP Batcher(重点) SRP Batcher 是什么? SRP Batcher是怎么优化的? 内置渲染管线和URP的CPU原理图对比: SRP Batcher 兼容性 3. URP的增加功能 1.渲染管线扩展/...
2021-05-05 20:07:38
2627
4
转载 Unity3D中自带事件函数的执行顺序
在Unity3D继承自MonoBehavior的脚本中,有几个Unity3D自带的事件函数按照预定的顺序执行作为脚本执行。其执行顺序如下:编辑器(Editor)Reset:Reset函数被调用来初始化脚本属性当脚本第一次被附到对象上,并且在Reset命令被使用时也会调用。 编者注:Reset是在用户点击Inspector面板上Reset按钮或者首次添加该组件时被调用。Reset最常用于在见识面板中给定一个默认值。第一次场景加载(First Scene Load)这些函数会在一个场景开始(场景中
2021-03-05 17:43:06
213
转载 Unity Shader 一些宏以及内置函数简介
ComputeScreenPos:位于UnityCG.cginc中,用于将裁剪空间坐标范围从[-w,w]映射到[0,w](不做透视除法,直接插值),像素着色器中用的时候一般除以w映射到[0,1]作为纹理(比如深度纹理)的uv值;tex2Dproj:与tex2D相似,不过输入的uv一般是上面ComputeScreenPos计算出的值,用的时候要除以w做个映射;UNITY_PROJ_COORD:处理平台差异,一般直接返回输入的值;SAMPLE_DEPTH_TEXTURE:位于HLSLSupport.
2021-03-03 14:42:22
644
1
原创 Unity Editor模式编辑属性即时生效
1.创建的标签名(SetProperty)publicclassSetPropertyAttribute:PropertyAttribute{publicstringName{get;privateset;}publicboolIsDirty{get;set;}publicSetPropertyAttribute(stringname){this.Name=name;}...
2021-02-25 13:04:29
1205
转载 Unity2019.4.6f1和AndroidStudio4.0实现安卓原生向unity发送消息
本篇主要讲通过安卓向unity发送字符串消息。一.工具如下:1.Unity2019.4.6f1;本教程2019版本的unity均可使用。2.AS4.0创建原生安卓工程;其他版本应该也适用3.VS2019编写unity代码;任何版本都可以二.流程综述1.创建unity安卓工程,生成对应的安卓apk(相关配置请参阅https://mp.csdn.net/editor/html/81739935);2.创建接受安卓信号的代码块3.创建安卓原生工程,书写向ios发送消息的代码块,生成
2021-01-29 14:17:06
318
转载 决AndroidStudio 控制台编译输出中文乱码
背景在AndroidStudio中新建了一个Java Module,但是点击Run ‘app’之后,Build Output控制台输出的中文都是乱码,都是问号一样的字符google了很多方法,要么就是文不对题,要么就是各种抄,没有真正测试过!错误方案一File Encodings改为UTF-8?没用!错误方案二build.gradle添加如下代码? tasks.withType(JavaCompile) { options.encoding = "UTF-8"}...
2021-01-29 14:16:06
584
1
转载 Unity3d Android SDK接入解析(三)接入Android Library的理解(爱贝云支付为例)
一、前言写这个主题的原因,出于刚入门u3d,需要接入爱贝云支付的内容,苦于爱贝支付是一个Android的Library库,看到网上漫天遍野都是Android接入的帖子,但却没有我想要的关于Library的接入指导。最后,通过不断的反编译研究其他的SDK(看过了友盟、小米等等的SDK),终于还是摸到了一些关键点,这也促成了前面两篇的内容。这一篇的关键的技术点在前两篇基本上都有讲过,在此回顾一下接入过程中遇到的问题和自己的思考,补充一些漏掉的东西。有兴趣的可以看看我的前两篇文章:Unity3d And
2021-01-29 11:14:41
427
转载 #if #ifdef #if defined 等几种常用的预处理指令的区别
在写shader时经常会出现一些预编译指令比如 #if #ifdef #if defined 等,有的时候会感到困惑,所以决定仔细查一下具体的使用方法,并做一个简单的测试。#define#define 指令用于定义一个宏或者常量#define 有两种常用的格式:#define identifier token-string 定义一个宏,在预编译时会把所有identifier替换成token-string,可以用更容易理解的名称去代替一个常量,例如:#define PI 3.1415926 #
2021-01-25 13:29:10
970
转载 unity planar实时阴影
废话不多先上图片 实时阴影效果 带渐变的接着上代码Shader "Custom/NewShader" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} //*********************绘制阴影的参数**************************** _ShadowPlane ("Shadow Plane", Vector) = (0,1,0,0.02)
2021-01-19 18:01:09
151
转载 Unity移动平台下的烘焙使用及优化
移动平台下场景制作的规模越来越大,开放视角的3D大世界场景,对地图大小、可视距离的要求越来越高,随之带来了地形尺寸变大、场景物件种类变多、物件的模型面数和数量增长,对美术效果上的要求也趋近于主机和PC端游戏。Realtime Global Illumination 在移动平台下还不能随意使用,美术场景的光照主要还是以 Baked GI 为主,随着Unity版本的升级,场景烘焙流程也迭代过几个版本,但是仍然暴露出了越来越多的问题。在Unity官方的技术支持下我们发现在烘焙流程中疏忽了一些很重要的环节,加上
2021-01-11 09:58:14
1622
转载 Unity3d场景快速烘焙
很多刚刚接触Unity3d的童鞋花了大量的时间自学,可总是把握不好Unity3d的烘焙,刚从一个坑里爬出来,又陷入另一个新的坑,每次烘焙一个场景少则几个小时,多则几十个小时,机器总是处于假死机状态,半天看不到结果,好不容易烘焙完了,黑斑、撕裂、硬边、漏光或漏阴影等缺陷遍布,惨不忍睹,整体效果暗无层次,或者苍白无力,灯光该亮的亮不起来,该暗的暗不下去,更谈不上有什么意境,痛苦的折磨,近乎失去了信心,一个团队从建模到程序,都没什么问题,可一到烘焙这一关,就堵得心塞,怎么也搞不出好的视觉效果,作品没法及时向用户交
2021-01-11 09:56:25
2144
1
转载 天空盒,灯光和烘焙
游戏场景的灯光无疑非常重要的,其不仅起到照亮场景的作用,好的灯光更能渲染气氛,使游戏效果更加逼真。然而又不能滥用灯光,因为灯光,阴影等会消耗大量的性能,造成游戏的卡顿,内存消耗太大等问题。因此掌握Unity中灯光,活用灯光非常关键。对现实生活中光线的反射,折射,衍射等特性的模拟,一直以来都是计算机图形学的重要研究方向。在漫长的发展过程中,出现过很多很多计算方案,总体有这几种:直接模拟光线从光源发出到最终被物体吸收的正向过程,也就是GI(Global Illumination); 不直接模拟光线.
2021-01-11 09:52:28
608
转载 Unity 灯光及光照烘焙
对现实生活中光线的反射,折射,衍射等特性的模拟,一直以来都是计算机图形学的重要研究方向。在漫长的发展过程中,出现过很多很多计算方案,总体有这几种:直接模拟光线从光源发出到最终被物体吸收的正向过程,也就是GI(Global Illumination); 不直接模拟光线,而是反向搜集物体表面特定点的受光强度来模拟现实照明效果,也就是FG(Final Gathering); 完全不考虑光线的行为,单纯基于“物体上与其它物体越接近的区域,受到反射光线的照明越弱”这一现象来模拟现实照明(的一部分)效果,即AO
2021-01-09 14:54:25
9668
转载 Unity的超大开放世界解决方案
近期,Unity在北京、成都、深圳分别举办了三场制作人专场活动,搭建优秀游戏制作人与Unity官方面对面交流的桥梁,内容涵盖项目优化、技术美术与解决方案等多个方面。 本文为大家带来的是Unity技术支持工程师刘伟贤的演讲-《Unity的超大开放世界解决方案》。你可以点击[阅读原文]下载本次演讲的PPT。 下面是本次演讲视频。演讲内容 大家好,很高兴这么多人在场聆听,首先简单介绍一下我自己。 我是刘伟贤,是Unity在广州的技术支持工程师,主要负责企业级技术支持的工作,服务过很多企业客
2021-01-06 14:23:10
1513
转载 LinearEyeDepth和Linear01Depth
在UnityCG.cginc中:// Z buffer to linear 0..1 depthinline float Linear01Depth( float z ){ return 1.0 / (_ZBufferParams.x * z + _ZBufferParams.y);}// Z buffer to linear depthinline float LinearEyeDepth( float z ){ return 1.0 / (_ZBufferParams.
2020-12-29 10:34:46
305
转载 CreateCone
using UnityEngine;using UnityEditor;using System.Collections;// an Editor method to create a cone primitive (so far no end caps)// the top center is placed at (0/0/0)// the bottom center is placed at (0/0/length)// if either one of the radii is 0,..
2020-12-23 14:15:18
127
原创 Unity 几种画线方式
【前言】图形化调试可以加速开发。例如在战斗中,可能需要知道所有单位的仇恨值,如果这些信息全打log的话,很难有直观感受,而如果在Scene窗口里,单位头顶有一个球,越红表示仇恨越高,越暗表示仇恨越低,那么调试起来比打log直观多了。【一 图形化调试】Unity中图形化调试主要4种Debug.DrawGizmos.DrawGraphic.DrawMeshGL只需在Scene窗口显示的调试图像一直显示的OnDrawGizmos +Gizmos.Dr...
2020-12-23 14:14:26
4940
转载 2020-12-06
【前言】图形化调试可以加速开发。例如在战斗中,可能需要知道所有单位的仇恨值,如果这些信息全打log的话,很难有直观感受,而如果在Scene窗口里,单位头顶有一个球,越红表示仇恨越高,越暗表示仇恨越低,那么调试起来比打log直观多了。【一 图形化调试】Unity中图形化调试主要4种Debug.DrawGizmos.DrawGraphic.DrawMeshGL只需在Scene窗口显示的调试图像一直显示的OnDrawGizmos +Gizmos.Dr...
2020-12-07 00:04:45
132
转载 Unity 使用自定义资源(.asset)配置数据
Unity 使用自定义资源(.asset)配置数据在游戏开发中,经常会用到一些配置文件保存一些数据,然后项目运行中读取这些配置文件中的数据在游戏中使用。如:配置血条:根据角色类型(人物、动物、怪物等)配置不同的血条,包括血条大小,血条名或血条预设,血条颜色等一些简单数据。如:配置子弹:子弹类型(真子弹、假子弹、追踪子弹等),子弹速度,伤害数值,子弹关联的特效等。诸如此类的配置很多种,可创建一个可序列化的类存储数据,或者创建 XML 、JSON 文件保存数据,创建 Excel 文件,创建 T
2020-12-02 19:01:22
876
转载 Unity常用[xxx]用法 特性
标记字段[Space] 可以与上面形成一个空隙,可以带参数[Space(30)][Header(“XXX”)] 在Inspector面板上给定义的字段的上一行加段描述,可以将属性隔离开,形成分组的感觉[Tooltip(“XXX”)] 给一个变量添加这个属性后,在Inspector面板将鼠标悬停在该变量上可以显示提示[Range(min, max)]` 限制数值变量的取值范围并以滑动条显示在Inspector中[Min(min)] 限制一个 float,int 类型的变量的最小值(测试
2020-09-03 11:02:06
248
转载 Unity3D深入浅出 - 导航网格自动寻路(Navigation Mesh)
NavMesh(导航网格)是3D游戏世界中用于实现动态物体自动寻路的一种技术,将游戏中复杂的结构组织关系简化为带有一定信息的网格,在这些网格的基础上通过一系列的计算来实现自动寻路。。导航时,只需要给导航物体挂载导航组建,导航物体便会自行根据目标点来寻找最直接的路线,并沿着该线路到达目标点。下面通过一个简单的Sample来介绍NavMesh的应用:1.在Scene中新建三个Cube,如下图摆放。2.选中上图三个Cube,并在Inspector面板中选中为静态(static)下拉选项的Navig
2020-09-03 10:54:54
1242
转载 unity3d的碰撞检测及trigger
A、基本概念 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。物体发生碰撞的必要条件: 两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则.
2020-08-20 10:31:11
1613
转载 使Android奔溃日志符号化
使Android奔溃日志符号化ByAlejandro López.Created:2017年01月12日01:32- Updated:2020年05月11日08:06ANDROIDCRASHSYMBOLICATE问题您的用户给你反馈了一个Android崩溃日志文件。由于文件仅给出内存地址所以您不知道函数的调用栈。原因当您使用发布模式编译项目是,函数符号是不会跟随APK打包的。如果您的应用奔溃了,那么函数调用栈仅会显示内存的地址。解决方案对于Unity5....
2020-08-12 10:44:44
522
转载 unity拓展编辑器入站指南
Unity里面比较出色我也很喜欢的一个功能就是它易于拓展的编辑器。一般来说拓展编辑器对于游戏运行效率不是有什么大的帮助,但是有助于开发效率的提高。毕竟工欲善其事,必先利其器。这次介绍一共以下这些拓展编辑器的方法: OnDrawGizmos OnInspectorGUI OnSceneGUI MenuItem 与 EditorWindow ...
2020-04-02 12:12:34
254
原创 unity引擎可以制作无缝超大地图相关文章
1.uinty支持多场景叠加(LoadLevelAdditive),你并不需要把一个大地图做在一个场景里,而是把大地图划分多块不断加载场景卸载场景来实现大地图的拼接。ue4有一套无缝地图的官方方案可以用来参考的,原理完全可以用在unity上https://docs.unrealengine.com/latest/CHN/Engine/LevelStreaming/WorldBrowser/in...
2020-03-06 11:01:49
2217
转载 Terrain方案比较
作者:admin / 时间:2019年09月23日 / 浏览:1285 次 / 分类:厚积薄发1)Terrain方案比较2)关于Batch.DrawInstanced的理解3)粒子系统问题4)如何定位Physics.Raycast的耗时5)在Unity如何用代码安全地隐藏Spine角色的某一部分这是第176篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、...
2020-03-02 16:37:09
746
转载 Unity的超大开放世界解决方案
近期,Unity在北京、成都、深圳分别举办了三场制作人专场活动,搭建优秀游戏制作人与Unity官方面对面交流的桥梁,内容涵盖项目优化、技术美术与解决方案等多个方面。本文为大家带来的是Unity技术支持工程师刘伟贤的演讲-《Unity的超大开放世界解决方案》。你可以点击[阅读原文]下载本次演讲的PPT。下面是本次演讲视频。演讲内容大家好,很高兴这么多人在场聆听,首先简单介绍一下我自己。我是刘...
2020-03-02 16:24:51
5028
转载 在Unity中为即时战略游戏实现战争迷雾(下)
本文将在Unity中为即时战略游戏实现战争迷雾的一种新方法。在上一篇文章中,游戏开发工程师Ariel Coppes分享了《钢铁战队》中战争迷雾效果的实现方法,本文他将介绍新的一种实现方法。新的战争迷雾及视野系统目标是实现下列功能: 能够随时渲染每个玩家的战争迷雾,用于进行回放和调试。 能够结合多个玩家的视野,用于提供友方视野、实现观众模式和观看回放时使用。 使用不...
2020-03-02 16:15:19
693
转载 在Unity中为即时战略游戏实现战争迷雾(上)
本文将由游戏开发工程师Ariel Coppes分享在Unity中为即时战略游戏实现战争迷雾效果。 过去三年中,我一直在Ironhide Game Studio开发移动即时战略游戏《钢铁战队》。在开发过程中,我实现了适合这款游戏的战争迷雾效果,但该实现方法缺乏即时战略游戏中的一些常见功能,我希望有一天能够找到改进它的方法。 最近,我在拳头游戏开发博客阅读到了一篇关于《英雄联盟》中战争...
2020-03-02 16:09:15
796
转载 开放世界游戏中的大地图背后有哪些实现技术?
原文:http://gulu-dev.com/post/2014-11-16-open-world 一、程序技术篇:算法和架构(Programming Algorithms & Architecture) 1. 无限循环的平铺地图(Infinite Tiling) 2. 可预测随机数和无限宇宙(Predictable Random) 3. 精度问题解决方案 4. 超大地形的...
2020-02-29 10:31:21
1984
原创 unity 延迟执行方法Invoke
nvoke() 方法是 Unity3D 的一种委托机制如: Invoke("SendMsg", 5); 它的意思是:5 秒之后调用 SendMsg() 方法;使用 Invoke() 方法需要注意 3点:1 :它应该在 脚本的生命周期里的(Start、Update、OnGUI、FixedUpdate、LateUpdate)中被调用;2:Invoke(); 不能接受含有 参数的方法;3:...
2019-11-25 16:21:13
926
转载 unity3d 动态加载资源Resources.Load和AssetBundle
1.首先总结下unity有哪几种资源类型 unity资源的类型: -a) Unity内置的常用asset, fbx\jpg...- b) textasset: txt、binary等,对应了它的TextAsset类,可以直接读入文本或者二进制byte...
2019-11-23 15:07:39
891
原创 Unity Gizmos可视化辅助工具
所有gizmo绘制需要在脚本的OnDrawGizmos或OnDrawGizmosSelected里函数完成。 OnDrawGizmos在每帧调用。所有在OnDrawGizmos中渲染的gizmos都是可见的。 OnDrawGizmosSelected仅在脚本附加的物体被选择时被调用。 Gizmos.DrawLine 从obj1到obj2之间画一条绿色的线us...
2019-11-21 19:24:33
1047
转载 Unity 四大GUI系统
前言首先,对于编辑器中的GUI系统,我们可以分为四大类:1、UnityEngine.GUI2、UnityEngine.GUILayout3、UnityEditor.EditorGUI4、UnityEditor.EditorGUILayoutGUI系统这是运用最广泛的GUI系统,所属命名空间UnityEngine,用其绘制的所有控件不带有自动布局效果,需要手动指定每个控件的绘制位置和...
2019-11-21 17:25:28
1052
原创 在scene视图获取鼠标位置
如果需要在scene视图实时获取鼠标位置:[CustomEditor(typeof(TileMousePosition))]publicclassShowInfo:Editor{ voidOnSceneGUI(){ TileMousePositiongameStart=(TileMousePosition)target; ...
2019-11-21 11:41:37
1136
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人