在Unity中管理材质

news2024/11/25 3:05:28

Shader和Material的关系

    Shader能够设置游戏物体的颜色或者能够通过材质来配置颜色。实际上,一个shader能够让许多物体看起来像是完全不同的物质。

    Shader和材质作为一个整体工作:Shader定义了表面看起来可以像哪些东西,材质让表面真正看起来是哪一个具体的东西。

修正紫红色的材质

    当我们从一个项目导入资源到当前项目时,有时会出现两个项目的渲染管线不匹配的情况,此时shader也是不匹配的。当某个材质使用的shader和当前渲染管线不匹配时,Unity Editor会使用明亮的紫红色来做警告提示,如下图所示。


    上图例子的工程时URP,为了修复紫红色柠檬的问题,我们先选中这个游戏物体,在其Inspector面板中,可以看到其材质的shader被设置为了Standard。在Unity中,如果shader的名字为Standard,则其基本就是Built-in渲染管线的Standard Shader,这种shader在URP工程中是无法正常工作的。我们需要将其改成一个URP shader来修复这个问题。

    在Shader下来菜单中,选择Universal Render Pipeline -> Lit,随后我们可以看到问题被修复了。


    上面所说的方法仅仅是最简单的一种修复材质错误的方法,但是还有其他很多错误材质的问题并没有这么简单就可以修复。

URP自动材质升级

    URP有一个built-in工具来自动转换问题材质。其步骤如下:

    1. Unity Editor的主菜单中,选择 Edit -> Render Pipeline -> Universal Render Pipeline -> Upgrade Project Materials to UniversalIRP Materials。

    2. 做完第一步后,由于这个选项会修改工程文件,会有一个弹窗提示确认你是否已经备份过项目了。确认后选择Proceed就可以了。

URP项目游戏物体的默认材质

    在URP项目中,添加一个Sphere到场景中,我们可以看到,它有一个默认材质Lit。


    点击Lit,在其Inspector面板中可以看到,它对应的shader是Universal Render Pipeline/Lit Shader。


    我们还可以看到,默认材质的Inspector中的所有东西都是灰的,表明其相关shader和属性在Editor中是无法修改的(但可以通过代码来修改)。

在项目窗口中查找材质

    当我们导入了不同资源到项目中后,如何能快速查找项目中的所有材质呢?

    首先在项目窗口中点击下图的图标,选择“Two Colume layout”

    


    然后在搜索框里输入t:Material(t表示type,例如想搜索所有脚本,就使用t:Script):


    如果想要搜索带关键字的材质,则再加上关键字即可,如下图会搜索名字里有red的材质:


应用材质到游戏物体上

    在场景中选择游戏物体,查看Inspector面板,在Mesh Renderer组件中的Materials下,可以进行材质的选择。


    当然,也可以拖动项目窗口中想要应用的材质到场景中的某个游戏物体上。

    一个材质可以应用到多个游戏物体上,当我们修改材质的属性时,所有使用这个材质的游戏物体都会发生变化。由于材质是整个项目范围内都能看到的,因此即使不同场景的不同游戏物体,只要它们使用同一个材质,材质属性改变后,这些游戏物体也都会变化。

创建材质

    一般在Unity项目中,我们会创建一个叫做Materials的目录或类似的目录来管理存放材质。下面的例子会以Materials目录名为例,来看材质的创建过程。

    首先,我们在场景中新增一个Cube


    然后在项目窗口中,找到Materials目录,点击后,在这个目录下点击右键,选择Create->Material:


    命名这个材质名为CubeMaterial,然后在Inspctor里调整一下相关属性,最后应用这个材质到前面创建的Cube游戏物体上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/333565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【手写 Vuex 源码】第一篇 - Vuex 的基本使用

一,前言 本篇开始,进入 vuex 源码学习,本篇主要介绍一下内容: 创建 vuex 源码项目;介绍 vuex 的基本使用; 二,创建 vuex 源码项目 1,使用 vue-cli 创建 vue2.x 脚手架 vue creat…

shell脚本(语法)

一、什么是shell脚本 1.1、shell 的两层含义:既是一种应用程序,又是一种程序设计语言 1.1.1、shell是一种应用程序 交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能称之为 shell 命令解析器。 shell 是…

阳离子交换树脂排钾,选择性吸附钾离子

Tulsimer T-42特级凝胶型强酸性阳离子交换树脂,适用于超纯水系统的混床用阳离子交换树脂 Tulsimer T-42是特级强酸型离子交换树脂,氢 H/钠 Na阳离子交换树脂, 是一款有较的交换容量 ,并同时拥有物理及化学稳定品质。可应用于汽电共生发电厂冷…

excel操作技巧:聊聊关于打印的一些事儿

在之前的学习中,小编给小伙伴们带来了许多关于Excel操作的小技巧,不过最近很多小伙伴在打印上又犯了难题,倒在了最后一步上,实在是亏得很。今天小编就来给大家讲讲打印的那些难事儿!难题一: 多列数据打印不…

【Unity】Tomcat 部署项目(3种方式)

一、将Unity WebGL包丢进webapps这是最简单粗暴的方式:将Unity WebGL包丢进tomcat/webapps目录即可。无需修改任何配置文件即可完成部署。使用tomcat10与Unity Pong Game包来做测试。①启动tomcat②将Unity Pong Game包丢进webapps目录浏览器直接访问:lo…

HTTP和HTTPS协议

HTTP协议 HTTP协议是一种应用层的协议,全称为超文本传输协议。 URL URL值统一资源定位标志,也就是俗称的网址。 协议方案名 http://表示的就是协议方案名,常用的协议有HTTP协议、HTTPS协议、FTP协议等。HTTPS协议是以HTTP协议为基础&#…

java面经汇总

Java基础 什么是字节码? jvm可以理解的代码(.class文件) Java代码从源代码到运行过程: java代码 -> javac编译器->.class字节码文件 -> 解释器&JIT(运行时编译器)->机器码 JIT编译器会将热…

球面坐标系下的三重积分

涉及知识点 三重积分球面坐标系点火公式一些常见积分处理手法 球面坐标系定义 球面坐标系由方位角φ\varphiφ、仰角θ\thetaθ和距离rrr构成 直角坐标系(x,y,z)(x,y,z)(x,y,z)到球面坐标系的(r,φ,θ)(r,\varphi,\theta)(r,φ,θ)的转化规则如下: {xrsin⁡φco…

使用Python脚本修改Maya ASCII文件路径方法

以下脚本修改当前项目路径和子文件夹中扩展名为“.ma”的所有文件,这样您就可以轻松地一次编辑所有文件。此脚本搜索特定字符串replace_This变量并将其替换为with_This,您可以使用它更改引用路径、纹理路径等… 话不多说直接上脚本: import…

JavaWeb-JavaScropt入门(二)

目录函数语法传参函数表达式作用域对象使用 字面量 创建对象 [常用]使用 new Object 创建对象使用 构造函数 创建对象函数 语法 function 函数名(形参列表) {函数体return 返回值; }那么有了创建函数,肯定有调用函数: // 函数调用 函数名(实参列表) …

聊一聊,我对DDD的关键理解

作者:闵大为 阿里业务平台解决方案团队 当我们在学习DDD的过程中,感觉学而不得的时候,可能会问:我们还要学么?这的确引人深思。本文基于工作经验,尝试谈谈对DDD的一些理解。 一、序 《阿甘正传》中&#xf…

亚马逊要求UL94防火测试阻燃测试标准及项目

UL94认证是什么?分几个等级?是如何表示各等级?带电的产品上架亚马逊都需要相关的UL报告,需要有ISO 17025资质的实验室出具的测试报告才能正常销售和恢复链接,UL94防火测试则是其中一项。UL94试验共有五种:1.B级的水平燃烧试验2.…

Nginx负载均衡

1、概念 访问量太大,一个 Tomcat 扛不住,所以就搭建 Tomcat 集群。让集群中的多个 Tomcat 服务器实例分担负载。 纵向扩容和横向扩容: 纵向扩容:给单台服务器提升硬件的配置。例如:提升 CPU、增加内存、扩大带宽、扩…

关于华为网络设备操作系统的介绍

1、什么是VRP VRP是华为公司数据通信产品的通用操作系统平台,作为华为公司从低端到核心的全系列路由器、以太网交换机、业务网关等产品的软件核心引擎。 功能:实现统一的用户界面和管理界面、实现控制平面功能,并定义转发平面接口规范、实现…

量子比特大突破!原子薄材料成为“救世主”

(图片来源:网络)量子计算是一项极其复杂的技术,现阶段的一些挑战正严重阻碍着它的发展,尤其是量子比特的小型化和质量问题。IBM计划在2023年实现具有1121个超导量子比特的处理器。以目前的技术手段,要达到这…

大数据框架之Hadoop:入门(二)从Hadoop框架讨论大数据生态

第2章 从Hadoop框架讨论大数据生态 2.1 Hadoop是什么 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。主要解决,海量数据的存储和海量数据的分析计算问题。广义上来说,Hadoop通常是指一个更广泛的概念-Hadoop生态圈。 2.2 Hadoop发展历史 1&…

引入汇丰完成C+轮融资,镁信健康有何资本“魅力”?

近日,上海镁信健康科技股份有限公司(下称“镁信健康”)宣布完成C轮融资,引入汇丰集团作为战略投资者。镁信健康近两年是资本市场货真价实的“香饽饽”,2021年,完成B轮和C轮两轮融资,融资金额合计…

基于merlin使用chatGPT进行对话

最近chatGPT很热,大家都想试用它。但由于各种限制,一般情况下国内不能试用。 下面给大家介绍基于merlin使用chatGPT(目前每天只有11次问答次数)。 1 打开merlin页面 访问地址merlin.foyer.work,点击“add to chro…

深入Kafka核心设计与实践原理读书笔记第二章

1 生产者 生产逻辑 配置生产者客户端参数及创建相应的生产者实例。构建待发送的消息。发送消息关闭实列 参数说明 bootstrap.servers :用来指定生产者客户端链接Kafka集群搜需要的broker地址清单,具体格式 host1:port1,host2:port2,可以设置一个或多…

Sentinel-线程隔离和熔断降级

一、线程隔离 ​​​​ 总结 线程隔离的两种手段是? 信号量隔离线程池隔离信号量隔离的特点是? 基于计数器模式,简单,开销小线程池隔离的特点是? 基于线程池模式,有额外开销,但隔离控制更强 二…