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;用于不同的用途。 …

目标与学习方向

文章目录 一、任务最终目的二、所需技术栈1、前端开发2、后端开发3、数据库管理 三、WEB全栈开发路线1、学习HTML、CSS、JavaScript2、了解版本控制3、学习前端框架4、学习服务器端编程5、数据库6、构建RESTful API7、深入学习后端框架8、了解网络安全9、熟悉DevOps10、其他技能…

一、开发环境安装 Avalonia

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

WebSocket进行握手需要的字段

一、客户端请求必须要有的头&#xff1a; Upgrade: websocket Connection: Upgrade Sec-Websocket-Key: 随机生成的字符串 Sec-WebSocket-Protocol: chat Sec-WebSocket-Vesion: 13 二、服务端响应必须要有的头&#xff1a; Upgrade: websocket Connection: Upgrade SecWebSock…

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;更像是一种专门用于某种容器的接口。 常用的适…

关于渗透测试

目录 1渗透测试的目的 2渗透测试的手段 3渗透测试发现的问题分类 1渗透测试的目的 检验目的系统的安全性 2渗透测试的手段 1智能工具探测 2人工测试 3分析 3渗透测试发现的问题分类 SQL注入-高风险 垂直越权-高风险 链接注入-高风险 源码泄露-中风险 短信验证码重复利用-中风…

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

智能不锈钢氮气柜通过集成精密的温湿度和氧含量控制系统&#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上大佬的…

C语言socket TCP/IP通讯Server/Client程序(Ubuntu Linux 24.04环境)

继上篇文章介绍了Ubuntu Linux 24.04 C语言TCP/IP socket编程基础知识&#xff0c;本文将用C语言在Ubuntu Linux 24.04环境下开发一对使用socket进行TCP/IP通讯的Server/Client程序&#xff0c;实现的功能是&#xff1a; 1. 当client连上server时&#xff0c;显示连接成功的信…

MYSQL 数字(Aggregate)函数

目录 1、AVG() 2、MAX() 3、MIN() 4、SUM() 5、COUNT() 6、LIMIT() 1、AVG() 解释&#xff1a;返回数值列(字段)的平均值。 语法格式&#xff1a;SELECT AVG(column_name) FROM table_name 中文注释&#xff1a;select AVG(数值列/字段) from 表名 ; 用法&#xff1…

一五三、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; (^ ~ ^) 想看更多 那就点个关注吧 我会…

Spark大数据处理技术(期末复习)

Spark大数据处理技术&#xff08;期末复习&#xff09; 1)var a:Double5;var b:Int7;那么print(a*b) 35.0 2) var a:Int5; var bif(a>6) 7 println(b) 不满足 &#xff08;&#xff09; 3)var a:Int16; var b:Int13; var cif(a>b) 5 else 7; println(c) 5 4. object …

查看 RK3568 Android SDK 版本的详细指南

目录 前提条件方法一&#xff1a;通过getprop命令查看系统属性方法二&#xff1a;通过build.prop文件查看版本信息方法三&#xff1a;查看源码中的配置文件方法四&#xff1a;通过编译输出查看版本信息附录&#xff1a;常见问题及解决方法1. adb 命令找不到设备2. getprop 或 c…

【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;项目组反…