Unity 材质系统优化(mesh相同,图片不同,但是可以将所有的图片合成一张图集)

今天提供一个Unity材质优化的思路,流程是这样的,模型的mesh相同只是图片不同,我想着能不能将所有的图片合成一张图集呢,于是我就试着在Blender里面开搞了,所有的mesh相同的模型,共用一个材质(图集相同),

一:前期准备 TP图片打包,Blender UV展开

利用TP将所有的图片打包出一个图片 我这里使用TexturePacker打包的,导入到Blender里面,效果如下:

对模型展开UV,将UV进行缩放,缩放到合适位置,下一步就是导出模型文件,在Unity C#脚本里面进行UV坐标的偏移了,这样做的目的就是保证所有的球都用的是 同一个mesh,同一个材质,达到优化的目的

二: Unity C#脚本编写

using System.Collections;
using System.Collections.Generic;
using UnityEngine;/// <summary>
/// URP 现代管线中 每增加一个台球会增加4个drawcall
/// 通用管线中,每增加一个台球会增加2个drawcall
/// </summary>
public class Ball : MonoBehaviour
{[SerializeField]private Material ballMaterial;private List<Vector2> offsetList = new();public int ballNumber = 1;public int BallNumber {get {return ballNumber;}private set {ballNumber = value;}}// Start is called before the first frame updatevoid Start(){InitAllOffset();InitMat();}private void InitAllOffset() {offsetList.Add(new Vector2(0,0));offsetList.Add(new Vector2(0.33f,0));offsetList.Add(new Vector2(0.67f,0));offsetList.Add(new Vector2(0,-0.2f));offsetList.Add(new Vector2(0.34f,-0.2f));offsetList.Add(new Vector2(0.67f,-0.2f));offsetList.Add(new Vector2(0,-0.4f));offsetList.Add(new Vector2(0.33f,-0.4f));offsetList.Add(new Vector2(0.67f,-0.4f));offsetList.Add(new Vector2(0f,-0.6f));offsetList.Add(new Vector2(0.34f,-0.6f));offsetList.Add(new Vector2(0.67f,-0.6f));offsetList.Add(new Vector2(0f,-0.8f));offsetList.Add(new Vector2(0.33f,-0.8f));offsetList.Add(new Vector2(0.67f,-0.8f));}private void InitMat() {Vector2 targetUvOffset = offsetList[BallNumber - 1];// mat.SetTextureOffset("_BaseMap",targetUvOffset);// mat.SetVector("Offset",);Renderer render = GetComponent<Renderer>();if(render != null) {Debug.Log("重新设置材质");render.material.SetTextureOffset("_MainTex",targetUvOffset);}}// Update is called once per framevoid Update(){}
}

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

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

相关文章

八股文之JVM

目录 1.JVM内存划分 2.JVM类加载过程 3.JVM垃圾回收机制GC 3.1.判断谁是垃圾 3.2.如何释放对应的内存 1.JVM内存划分 在一个Java程序运行起来之后&#xff0c;jvm就会从操作系统中申请一块内存&#xff0c;然后就会将该内存划分成多个部分&#xff0c;用于不同的用途。 …

一、开发环境安装 Avalonia

1、概述 官网中是这么介绍Avalonia的&#xff0c;Avalonia是一个强大的框架&#xff0c;使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件&#xff0c;确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这…

CCAA认证人员注册全国统一考试开始报名

备受瞩目的CCAA&#xff08;中国认证认可协会&#xff09;认证人员注册全国统一考试即将拉开报名序幕。 考试基本信息&#xff1a; 1&#xff09;报名网站网址&#xff1a;https://kaoshi.ccaa.org.cn/ 2&#xff09;考试报名系统自2024年6月17日12:00时起面向考生正式开通&…

c++编程(19)——STL(5)容器适配器

欢迎来到博主的专栏——c编程 博主ID&#xff1a;代码小豪 文章目录 适配器adaptorstackqueuepriority_queue传送门&#xff1a; 适配器adaptor 适配器看起来像一个容器&#xff0c;实际上adaptor并不属于容器的范畴&#xff0c;更像是一种专门用于某种容器的接口。 常用的适…

智能不锈钢氮气柜温湿度氧含量控制介绍

智能不锈钢氮气柜通过集成精密的温湿度和氧含量控制系统&#xff0c;确保内部环境稳定在适宜存储敏感物料的条件。具体实现方式如下&#xff1a; 温度控制&#xff1a;智能氮气柜通常配备有精确的温度传感器以及加热或冷却系统。当内部温度偏离设定值时&#xff0c;系统会自动启…

0617_QT3

练习&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//去掉头部this->setWindowFlag(Qt::FramelessWindowHint);//去掉空白部分this->setA…

Misc之图片隐写

前几天忙高数和c考试去了。。。Web毫无进展&#xff0c;学学这个放松一下 一、工具准备 这里目前使用的工具为kali上的工具和安装在电脑上的Winhex&#xff0c;010editor&#xff0c;Stegsolve 二、png图片隐写 这里我就直接用题目学习了&#xff0c;也是参考了csdn上大佬的…

一五三、MAC 安装MongoDB可视化工具连接

若没有安装brew包管理工具&#xff0c;在命令行输入安装命令 /bin/bash -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”上面步骤安装完成后&#xff0c;开始安装MongoDB&#xff0c;输入安装命令&#xff1a; brew tap mongodb/brewbrew u…

【前端】Nesj 学习笔记

1、前置知识 1.1 装饰器 装饰器的类型 declare type ClassDecorator <TFunction extends Function>(target: TFunction) > TFunction | void; declare type PropertyDecorator (target: Object, propertyKey: string | symbol) > void; declare type MethodDe…

GenICam标准(三)

系列文章目录 GenICam标准&#xff08;一&#xff09; GenICam标准&#xff08;二&#xff09; GenICam标准&#xff08;三&#xff09; GenICam标准&#xff08;四&#xff09; GenICam标准&#xff08;五&#xff09; GenICam标准&#xff08;六&#xff09; 文章目录 系列文…

黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我会…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] K小姐和A先生的聚餐计划(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

SQL优化选对执行计划,查询速度提升1000倍 | OceanBase 应用实践

作者&#xff1a;爱可生数据库高级工程师任仲禹&#xff0c;擅长故障分析和性能优化。 本文通过一个案例&#xff0c;分享使用OceanBase时&#xff0c;SQL走错执行计划&#xff0c;而导致慢SQL的排查方法论。 案例背景 在使用OceanBase 3.2.3 版本的过程中&#xff0c;项目组反…

Java——IO流(字符流,字节流)

JavaIO的整体框架图 IO流从方向上来说&#xff0c;可以分为输入流和输出流&#xff1b; 从传输内容上来说&#xff0c;可以分为字符流和字节流 防止记混的口诀 所谓的IO&#xff0c;说白了就是数据在内存和硬盘之间的传输 输入流 %Reader %InputStream&#xff0c;从硬盘写…

C#——类和对象详情

类和对象 类 类是一种数据结构&#xff0c;它可以包含数据成员&#xff08;常量和字段&#xff09;、函数成员&#xff08;方法、属性、事件、索引器、运算符、实例构造函数、静态构造函数和析构函数&#xff09;以及嵌套类型。类类型支持继承&#xff0c;继承是一种机制&…

在 Selenium 中更改 User-Agent | 步骤与最佳实践

在 Selenium 中更改 User Agent 是许多网页抓取任务中的关键步骤。它有助于将自动化脚本伪装成常规浏览器&#xff0c;从而避免被网站检测到。本指南将带您了解如何在 Selenium 中更改 Google Chrome 的 User Agent&#xff0c;并提供最佳实践以确保您的网页抓取任务顺利进行。…

湿法消解石墨消解仪 应用化学分析领域石墨炉

石墨消解仪在化学实验中具有重要的作用。它是一种高级实验设备&#xff0c;广泛应用于化学分析领域&#xff0c;特别是在样品的前处理和测试前的样品制备过程中。 石墨消解仪采用高温高压技术&#xff0c;能够将固体样品中的有机和无机物质转化为可溶性的气体或液体形式。这种…

从0进入微服务需要了解的基础知识

文章目录 系统架构演化过程为什么要了解系统架构的演化过程技术发展认知技术选型与创新 演变过程单体架构分层-分布式集群微服务 分布式\集群\微服务 微服务中的核心要素-拆分原则项目拆分与复杂度微服务的拆分维度有哪些小结 微服务中的核心要素服务化进行拆分后一定是微服务&…

可通过小球进行旋转的十字光标(vtkResliceCursor)

前一段事件看到VTK的一个例子&#xff1a; 该案例是vtk.js写的&#xff0c;觉得很有意思&#xff0c;个人正好也要用到&#xff0c;于是萌生了用C修改VTK源码来实现该功能的想法。原本以为很简单&#xff0c;只需要修改一下vtkResliceCursor就可以了&#xff0c;加上小球&#…

自动生成列表,颜色随机 ,定时执行函数,10秒停止执行函数,按钮执行函数

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>颜色列表Color List</title><style>…