当前位置: 首页 > news >正文

Unity编辑器紫色

紫色原因是因为编辑器内跑了其他平台的shader兼容性导致的,需要动态的去修改shader,主要用到Unity的api : Shader.Find(shaderName);

具体的工具代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ShaderManager
{public static ShaderManager Instance;public static ShaderManager GetInstance(){if (Instance == null){Instance = new ShaderManager();}return Instance;}List<Renderer> results = new List<Renderer>();List<Image> imageResults = new List<Image>();/// <summary>/// 修改一个AssetBundle内的所有shader/// </summary>public void ResetAllMaterials(AssetBundle bundle){//对Material进行更改var materials = bundle.LoadAllAssets<Material>();foreach (Material m in materials){var shaderName = m.shader.name;if (shaderName == "Hidden/InternalErrorShader")continue;var newShader = Find(shaderName);if (newShader != null){m.shader = newShader;}else{Debug.LogWarning("unable to refresh shader: " + shaderName + " in material " + m.name);}}//对GameObject进行更改var gameObjects = bundle.LoadAllAssets<GameObject>();foreach (var go in gameObjects){results.Clear();//物件上的材质go.GetComponentsInChildren<Renderer>(true, results);if (results.Count > 0){for (int ii = 0; ii < results.Count; ii++){for (int k = 0; k < results[ii].sharedMaterials.Length; ++k){var m = results[ii].sharedMaterials[k];UseEditorShader(m);}//粒子if (results[ii] is ParticleSystemRenderer particleRender){UseEditorShader(particleRender.sharedMaterial);UseEditorShader(particleRender.trailMaterial);}}}//贴图上的材质imageResults.Clear();go.GetComponentsInChildren<Image>(true, imageResults);if (imageResults.Count > 0){for (int ii = 0; ii < imageResults.Count; ii++){UseEditorShader(imageResults[ii].material);}}}}/// <summary>/// 修改单个物件的Shader/// </summary>/// <param name="go"></param>public void ResetEditorShader(GameObject go){if (go == null){return;}results.Clear();go.GetComponentsInChildren<Renderer>(true, results);if (results.Count > 0){for (int ii = 0; ii < results.Count; ii++){for (int k = 0; k < results[ii].sharedMaterials.Length; ++k){var m = results[ii].sharedMaterials[k];UseEditorShader(m);}}}}void UseEditorShader(ref Shader shader){if (shader == null)return;var shaderName = shader.name;var newShader = Find(shaderName);if (newShader != null)shader = newShader;}void UseEditorShader(Material material){if (material == null || material.shader == null)return;var shaderName = material.shader.name;var newShader = Find(shaderName);if (newShader != null)material.shader = newShader;}Shader Find(string shaderName){Shader outShader = Shader.Find(shaderName);if (outShader == null){outShader = Shader.Find("Standard");}return outShader;}
}

Shader的添加形式大概有两种:

  1. 跟随AssetBundle 打进包里面,可以直接使用
         
    ShaderManager.GetInstance().ResetAllMaterials(bundleInfo.bundle);

  2. 自建材质
                material = new Material(shader);
    #if EDITOR_RUN_OTHER_PLATmaterial.shader = Shader.Find(material.shader.name);
    #endif

 

相关文章:

Unity编辑器紫色

紫色原因是因为编辑器内跑了其他平台的shader兼容性导致的&#xff0c;需要动态的去修改shader&#xff0c;主要用到Unity的api : Shader.Find(shaderName); 具体的工具代码如下&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine…...

冒泡排序(C语言)

void BubbleSort(int arr[], int len) {int i, j, temp;for (i 0; i < len; i){for (j len - 1; j > i; j--){if (arr[j] > arr[j 1]){temp arr[j];arr[j] arr[j 1];arr[j 1] temp;}}} } 优化&#xff1a; 设置标志位flag&#xff0c;如果发生了交换flag设置…...

Unity中Shader观察空间推导(在Shader中实现)

文章目录 前言一、观察空间矩阵推导1、求观察空间基向量2、求观察空间的基向量在世界空间中的矩阵 的 逆矩阵2、求平移变换矩阵3、相乘得出 观察空间转化矩阵4、得到顶点的世界空间坐标&#xff0c;然后转化到观察空间5、把观察空间坐标转化为齐次裁剪坐标输出到屏幕 二、最终效…...

Hive04_DDL操作

Hive DDL操作 1 DDL 数据定义 1.1 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)];[IF NOT EXISTS] &#xff1a;判断是否存在 [COMMENT database_c…...

odoo17核心概念view4——view.js

这是view系列的第四篇文章&#xff0c;专门介绍View组件。 作为一个Component&#xff0c;它总共包含js、css、xml三个标准文件&#xff0c;当然最重要的是view.js 首先在setup函数中对传入的参数props做了各种校验&#xff0c;然后扩展了subenv useSubEnv({keepLast: new Kee…...

Centos7 openSSL

阅读时长&#xff1a;10分钟 本文内容&#xff1a; 在阿里云Centos7上部署python3.10.6项目时遇到openSSL协议不支持&#xff0c;导致无法下载第三方包 本文目的&#xff1a; 通过手动编译&#xff0c;升级openssl版本centos7 重编译 python3.10.6github下载缓慢解决镜像源记录…...

Web 安全之文件下载漏洞详解

目录 引言 文件下载漏洞原理 文件下载漏洞的危害 文件下载漏洞类型 文件下载漏洞的利用方法 文件下载漏洞示例 文件下载漏洞的防护措施 漏洞检测与测试 小结 引言 在数字化时代&#xff0c;文件下载是网络应用程序的重要的功能之一&#xff0c;用户可以通过这一功能获…...

搬运机器人RFID传感器CNS-RFID-01|1S的RS485(MODBUS|HS协议)通讯连接方法

搬运机器人RFID传感器CNS-RFID-01|1S支持RS485通信&#xff0c;可支持RS485&#xff08;MODBUS RTU&#xff09;协议、RS485-HS协议&#xff0c;广泛应用于物流仓储&#xff0c;立库 AGV|无人叉车|搬送机器人等领域&#xff0c;常用定位、驻车等&#xff0c;本篇重点介绍CNS-RF…...

使用ZMQ.proxy实现ZMQ PUB消息转发

MQ.proxy 是 ZeroMQ 库中的一个功能&#xff0c;用于创建一个简单的代理服务器。它可以将消息从一个套接字传递到另一个套接字&#xff0c;实现消息的转发和路由。 要使用 ZMQ.proxy&#xff0c;需要按照以下步骤进行操作&#xff1a; 创建两个 ZMQ.Socket 对象&#xff1a;一个…...

若依SQL Server开发使用教程

1. sys_menu表中的将菜单ID修改为自动ID,解决不能增加菜单的问题&#xff0c;操作流程如下&#xff1a; 解决方案如下 菜单栏->工具->选项 点击设计器&#xff0c;去掉阻止保存要求更新创建表的更改选项&#xff0c;点确认既可以保存了 2 自动生成代码找不表的解决方案…...

Mysql5.7服务器选项、系统变量和状态变量参考

官网地址&#xff1a;MySQL :: MySQL 5.7 Reference Manual :: 5.1.3 Server Option, System Variable, and Status Variable Reference 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. MySQL 5.7 参考手册 / ..…...

【Qt-Qss-Style】

Qt编程指南 ■ Qss■ Style■ setStyleSheet ■ style.qss■ border■ 去除弹框背景圆角■ QProgressBar样式表 ■ Qss Qt 支持很多种常见 符号 “>”代表直属子部件&#xff0c;说明两个控件之间是父子关系。 “#”代表后面的字段是前面控件类型的名称&#xff0c;当然也可…...

基于yolov8,制作停车位计数器(附源码)

大家好&#xff0c;YOLO(You Only Look Once) 是由Joseph Redmon和Ali开发的一种对象检测和图像分割模型。 YOLO的第一个版本于2015年发布&#xff0c;由于其高速度和准确性&#xff0c;瞬间得到了广大AI爱好者的喜爱。 Ultralytics YOLOv8则是一款前沿、最先进(SOTA)的模型&a…...

C++设计模式:单例模式(饿汉式、懒汉式)

单例模式是什么&#xff1f; 单例模式是一种创建型的软件设计模式。通过单例模式的设计&#xff0c;使得创建的类在当前进程中只有唯一一个实例&#xff0c;并提供一个全局性的访问点&#xff0c;这样可以规避因频繁创建对象而导致的内存飙升情况。 单例模式有三个要点 私有化…...

Django 访问前端页面一直在转异常:ReferenceError:axios is not defined

访问&#xff1a;http://127.0.0.1:8080/ my.html 一、异常&#xff1a; 二、原因 提示&#xff1a;axios找不到&#xff01;&#xff01; 查看代码<script src"https://unpkg.com/axios/dist/axios.min.js"></script>无法访问到官网 三、解决 Using j…...

C语言中关于指针的理解

#include <stdio.h> int main() {int a11;int *p&a; //因为a是整型的&#xff0c;所以我们定义指针p的时候要和a的类型一样char b;char *pa&b; //同理&#xff0c;b是字符型&#xff0c;所以这里的pa也要用字符型return 0; }因为*p指向的是地址&…...

MySQL MVCC精讲

版本链 我们前面说过&#xff0c;对于使用InnoDB存储引擎的表来说&#xff0c;它的聚簇索引记录中都包含两个必要的隐藏列&#xff08;row_id并不是必要的&#xff0c;我们创建的表中有主键或者非NULL的UNIQUE键时都不会包含row_id列&#xff09;&#xff1a; trx_id&#xff…...

如何快速删除pdf周围的空白

问题&#xff1a;写论文往往需要pdf格式的图片&#xff0c;但pdf往往四周存在大量空白需要手动截图很麻烦 解决&#xff1a; 打开命令行输入&#xff1a;pdfcrop 图片名.pdf...

蓝桥杯c/c++程序设计——数位排序

数位排序【第十三届】【省赛】【C组】 题目描述 小蓝对一个数的数位之和很感兴趣&#xff0c;今天他要按照数位之和给数排序。 当两个数各个数位之和不同时&#xff0c;将数位和较小的排在前面&#xff0c;当数位之和相等时&#xff0c;将数值小的排在前面。 例如&#xff0…...

【通讯录案例-搭建登录界面 Objective-C语言】

一、来看我们这个通讯录案例 1.接下来啊,我们来做这个通讯录案例, 然后呢,做这么一个应用程序啊, 我们第一步呢,先把界面儿搭了, 然后呢,搭之前,简单的来分析一下, 首先呢,这是,中间儿的这一块儿, 1)有个“账户”、“密码”,这一块儿, 这是一个什么控制器,…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...