Unity
文章平均质量分 53
Skyline_98
积跬步,至千里。
展开
-
理解垂直同步
首先,垂直同步信号是显示器在每显示完一帧发送的信号,要理解垂直同步的作用首先要清楚显示器刷新率与显卡渲染帧率之间的关系。显示器的刷新率:也就是显示器每秒钟显示的画面(帧)的数量,比如60Hz就是每秒显示60帧,这个值是显示器固有的,不能自由调节(有的显示器有几档可调)。而显卡渲染帧率:在这里指的是显卡在每秒钟里面能渲染出多少帧的画面。这个值基本上就是游戏里显示出来的FPS值。根据游戏的画面设置,是一个浮动值。也就是说,显示器的刷新率代表了显示器从帧缓存中读取数据的速度,显卡的渲染帧率代表了显卡向帧缓存原创 2021-04-02 17:37:04 · 1717 阅读 · 0 评论 -
线性颜色空间与伽马颜色空间
一、什么是线性颜色空间和伽马颜色空间? 线性颜色空间是指与显示亮度值之间呈线性关系的像素值空间。 伽马(Gamma)颜色空间是指线性颜色空间中的像素值经过伽马校正得到的颜色空间。 之所以使用伽马颜色空间是由于早期CRT显示器的输入电压与显示亮度值之间呈一种非线性关系,如图1所示,这个非线性关系曲线近似为指数函数曲线,这个指数称为Gamma。原创 2021-03-29 22:51:07 · 4031 阅读 · 0 评论 -
Unity在脚本中创建Material性能过慢的问题
最近,在Hololens中实现本地读取模型文件,从脚本中创建模型的对象、材质以及网格。发现在Hololens中创建网格的时延特别长,经过调试发现主要是有两个原因造成: 一方面,原因是模型顶点过多,有近百万个顶点,但这并没有达到Hololens 2的性能极限,因此这并不是主要原因; 另一方面,是因为在代码中为模型的材质创建了MeshCollid原创 2020-10-16 19:31:55 · 685 阅读 · 0 评论 -
Unity 一个MeshRenderer下添加多个Material并在脚本中使用
Unity的MeshRenderer提供了Materials数组,支持同时挂多种材质。这样做的目的是,为含有Mesh对象的多个SubMesh使用不同的材质,渲染不同的效果。 需要添加多个Material直接在对象的Inspector窗口修改Materials的Size,然后把待添加的材质拖入Element选项框即可。 在脚本中获取Mater原创 2020-10-14 16:38:43 · 5018 阅读 · 0 评论 -
C# 多线程和异步
C# 多线程和异步转载 2020-10-13 10:55:24 · 258 阅读 · 0 评论 -
Unity Canvas组件的三种渲染模式
最近,使用Unity在三维场景中显示文本时,发现文本随视角运动而运动,始终显示在视野中央。经过一番实验,终于将文本显示在世界空间内的固定位置。原来文本的显示位置是否随视角移动是由Unity Canvas的渲染模式决定的,并且所有的UI组件都可以通过Canvas来设置渲染模式。1、 什么是Canvas Canvas(画布)是承载所有UI元素的区域。所有的UI元素都必须是Canvas的子对象原创 2020-10-12 20:09:08 · 4078 阅读 · 0 评论 -
Unity中的C#编程基础:枚举类型
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。声明 enum 变量的一般语法:enum <enum_name>{ enumeration list };其中,enum_name 指定枚举的类型名称。enumeration list 是一个用逗号分隔的标识符列表。枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0.例如:enum原创 2020-10-11 20:40:00 · 1483 阅读 · 0 评论 -
Unity中Mesh数据优化总结
Unity中主要有三种Mesh压缩的方式,用于优化Mesh数据的空间开销。原创 2020-10-10 22:24:39 · 7530 阅读 · 2 评论 -
Unity中的C#编程基础:数据类型及数据类型转换
1、C#数据类型c#有16个预定义类型,其中13个是值类型,3个是引用类型(string 和 object)1.1 值类型如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用 sizeof(type)方法。C#中默认浮点型常量为double类型,使用float类型的浮点型常量需要加后缀 f 或 F 。1.2 引用类型C#内置的引用类型共有三种:对象类型、动态类型、字符串类型。对象(Object)类型 是 C# 通用类型系统(Common Type System - CTS)中所有数据类型原创 2020-10-06 20:41:38 · 1640 阅读 · 0 评论 -
Unity中的C#编程:日志输出
Unity中的C#脚本中将日志输出到控制台的方式主要分为以下两种:1、print() print()函数可以输出数字或者字符串,使用简单,可以输出普通类型的Log信息,但只能用于继承自MonoBehaviour的脚本中。2、调用Debug的方法 Debug.Log()函数的使用效果与print()函数相同,但适用范围更广,可以用于所有的C原创 2020-10-06 19:37:11 · 4785 阅读 · 0 评论 -
HoloLens2教程:创建Unity工程配置MRTK工具包
开发环境:win10、HoloLens2、Unity 2019.3.15、VS20191、创建Unity工程 打开UnityHub,选择2019.3.15版本,创建新的工程:点击新建,选择3D模板,输入项目名和项目地址,点击创建。 项目创建完成后,点击File→BuildSettings或者使用快捷键Ctrl+Shift+B,打开Buid原创 2020-10-06 11:43:35 · 2477 阅读 · 4 评论 -
Unity3d TextMeshPro教程
转载原文地址:Unity3d TextMeshPro教程TextMesh Pro是Unity默认文本组件的替代品。TextMesh Pro和默认组件一样拥有高性能,它使用了完全不同的Signed Distance Field(SDF)渲染技术,该技术最初由Valve在《军团要塞2》中使用。TextMesh Pro能够很轻松就能让文本看起来更美观,还提供了更高级的控制功能,你可以通过检视窗口和脚本控制文本效果。当你在项目中使用TextMesh Pro,它拥有改进的视觉效果。由于使用SDF渲染技术,你可以转载 2020-10-06 10:42:50 · 12653 阅读 · 0 评论 -
Unity使用脚本给已有物体创建子物体
using UnityEngine;using System.Collections;public class GiveParent : MonoBehaviour { string fullPath = "...";//模型数据的路径 void Start(){ GameObject tem = new GameObject(Path.GetFileNameWithoutExtension(fullPath)); tem.transform.parent = this.transf原创 2020-10-04 21:58:08 · 5986 阅读 · 1 评论 -
NVIDIA CG语言 所有数学类函数功能及源码实现
传送门转载 2020-09-30 16:35:59 · 148 阅读 · 0 评论 -
Material.EnableKeyword函数解析
public void EnableKeyword(string keyword); 在Unity中,着色器支持multiple compile,即一次编写多次编译,一份着色器代码可以被多种不同类型材质对象使用。Keyword就是用于在使用multiple compile时,设置材质类型。在使用multiple compile时,着色器要做如下的参数声明:#pragma multi_compile _ keyword1 keyword2 ...原创 2020-09-30 09:27:29 · 3464 阅读 · 0 评论 -
Shader.PropertyToID函数解析
public static int PropertyToID(string name); 参数name是属性名,返回值是标识该属性的唯一的int值。 为了提高效率,Unity为着色器属性的每个名称(例如,_MainTex或_Color)都分配一个唯一的整数,在整个游戏中保持不变。使用属性标识符比向所有物质属性函数传递字符串更有效。但是该数字在原创 2020-09-30 08:43:47 · 5558 阅读 · 0 评论 -
透彻解析Unity Camera的Clear Flag属性
最近在学习unity渲染的立方体纹理时,对Camera的Clear Flag属性产生了疑惑。Clear Flag有四个可以设置的选项,分别是:Skybox、Solid Color、Depth Only和Don't Clear。后两个比较好理解,无非是在每一帧渲染前,只清除深度缓存或者什么缓存都不不清除。但是前两个就比较让人费解,Skybox是在每次渲染前清除Skybox的颜色值吗?但是,从显示效果上来看并不是。于是,针对这一属性,查阅了很多博客,但大多数都没有讲透彻,总感觉距离理解这个属性就差一层窗户纸,.原创 2020-09-26 10:50:36 · 3402 阅读 · 1 评论 -
Unity创建纹理及纹理滤波
Unity3D中创建纹理使用的是unity中的Texture2D的构造函数。Texture2D(int width, int height);Texture2D(int width, int height, TextureFormat format, bool mipmap);Texture2D(int width, int height, TextureFormat format, bool mipmap, bool linear); 前两个参数设置了纹理的分辨率,T原创 2020-09-16 21:40:06 · 1289 阅读 · 0 评论