【Unity100个实用小技巧】保证原图片的情况下,动态扩展图片尺寸

news2024/12/29 9:24:03

  • ☀️博客主页:CSDN博客主页
  • 💨本文由 萌萌的小木屋 原创,首发于 CSDN💢
  • 🔥学习专栏推荐:面试汇总
  • ❗️游戏框架专栏推荐:游戏实用框架专栏
  • ⛅️点赞 👍 收藏 ⭐留言 📝,如有错误请指正
  • 📆 未来很长,值得我们全力奔赴更美好的生活✨

  • ------------------❤️分割线❤️-------------------------

请添加图片描述请添加图片描述请添加图片描述

Unity 小科普

老规矩,先介绍一下Unity的科普小知识:

  •  Unity 是行业领先的实时3D开发平台。
  • 包括游戏开发,电影,AR/VR,虚拟现实在内的所有创作者,可以将梦想照进现实。
  • Unity提供了一套完整完善的软件解决方案,可用于创作,运营和模拟任何2D和3D的内容,进本全平台支持
  • 实际上Unity就是一个游戏引擎,大名鼎鼎的原神就是用它制作的。

Unity100个实用小技巧

需求:图片分辨率动态扩展的时候,如何保持扩展了分辨率,又不丢失原本的图片。

两种方案

第第一种:GL实现

    public Texture2D ReSetTextureSize(Texture2D tex, int width, int height)
        {
            var rendTex = new RenderTexture(width, height, 48, RenderTextureFormat.Default);

            rendTex.Create();

            Graphics.SetRenderTarget(rendTex);

            GL.PushMatrix();

            GL.Clear(true, true, Color.clear);

            GL.PopMatrix();

            var mat = new Material(Shader.Find("Unlit/Transparent"));

            mat.mainTexture = tex;

            Graphics.SetRenderTarget(rendTex);

            GL.PushMatrix();

            GL.LoadOrtho();

            mat.SetPass(0);

            GL.Begin(GL.QUADS);

            GL.TexCoord2(0, 0);

            GL.Vertex3(0, 0, 0);

            GL.TexCoord2(0, 1);

            GL.Vertex3(0, 1, 0);

            GL.TexCoord2(1, 1);

            GL.Vertex3(1, 1, 0);

            GL.TexCoord2(1, 0);

            GL.Vertex3(1, 0, 0);

            GL.End();

            GL.PopMatrix();

            var finalTex = new Texture2D(rendTex.width, rendTex.height, TextureFormat.RGBA64, false);

            RenderTexture.active = rendTex;

            finalTex.ReadPixels(new Rect(0, 0, finalTex.width, finalTex.height), 0, 0);

            finalTex.Apply();

            return finalTex;
        }

第二种:RenderTexture实现

        private Texture2D ResizeTexture(Texture2D source, int width, int height)
        {
            if (source != null)
            {
                // 创建临时的RenderTexture
                RenderTexture renderTex = RenderTexture.GetTemporary(width, height, 0, RenderTextureFormat.Default, RenderTextureReadWrite.Linear,1);
                // 复制source的纹理到RenderTexture里
                Graphics.Blit(source, renderTex);
                // 开启当前RenderTexture激活状态
                RenderTexture previous = RenderTexture.active;
                RenderTexture.active = renderTex;
                // 创建修改后的纹理,保持与源纹理相同压缩格式
                Texture2D resizedTexture = new Texture2D(width, height, source.format, false);
                // 读取像素到创建的纹理中
                resizedTexture.ReadPixels(new Rect(0, 0, width, height), 0, 0);
                // 应用修改到GPU上
                resizedTexture.Apply();
                // 停止当前RenderTexture工作
                RenderTexture.active = previous;
                // 释放内存
                RenderTexture.ReleaseTemporary(renderTex);
                GameObject.Destroy(source);
                return resizedTexture;
            }
            else
            {
                return null;
            }
        }

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

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

相关文章

Kafka 原理温故之数据存储格式

背景 周末看系统架构的时候,看到一致性要求时,回忆了一下 Kafka 的消息一致性保障机制,顺便复习了一下 Kafka 的基础信息。 消息文件目录 Kafka 的消息存储目录是由 server.properties 文件的 log.dirs/tmp/kafka-logs 设置的,…

轻量应用服务器腾讯云和阿里云哪家更好?

轻量应用服务器阿里云和腾讯云哪个好?云服务器吧认为腾讯云轻量应用服务器还不错,腾讯云轻量服务器30元起,配置可选2核2G3M、2核2G4M、2核4G5M、4核8G12M、8核16G18M和16核32G28M,阿里云轻量应用服务器配置仅可以选择2核2G3M和2核…

c++对象中动态内存分配

c对象中动态内存分配 假设我们有两个类,一个是电子表格单元格类SpreadsheetCell,另外一个是电子表格类Spreadsheet。我们都使用过电子表格,一个电子表格往往都有行与列组成。所以我们的Spreadsheet类是SpreadsheetCell类的二维数组。 下面我…

MySQL—系统管理

文章目录 一、系统数据库二、常用管理工具mysqlmysqladminmysqlbinlogmysqlshowmysqldumpmysqlimport/source 一、系统数据库 MySQL安装后,默认会带4个数据库: 数据库含义mysql存储MySQL服务器正常运行所需要的各种信息 (时区、主从、用户、…

【CAN卡通信的下位机-STM32cubeIDE-hal库+STMF4xx+数据发送和接收+中断接收方式+基础样例(2)】

【CAN卡通信的下位机-STM32cubeIDE-hal库STMF4xx数据发送和接收中断接收方式基础样例2】 1、概述2、实验环境3、问题描述4、自我尝试与努力(1)在网上查照相关配置文章,进行配置对比。(2)对比st的官方样例例程。(3)请教大佬,帮忙查看代码和调试。(4)总之…

【数据结构】散列表(哈希表)

文章目录 前言一、什么是散列表二、什么是哈希函数三、下面简单介绍几种哈希函数四、冲突处理散列冲突的方法开放定址法再散列函数法公共溢出区法链地址法 五、代码实现1.哈希函数2.链表和哈希表的创建3.哈希表初始化3.从哈希表中根据key查找元素4.哈希表插入元素5.元素删除6.哈…

100天精通Python(可视化篇)——第85天:matplotlib绘制不同种类炫酷气泡图参数说明+代码实战(网格、自定义颜色、钟型、交互、打卡、动态气泡图)

文章目录 专栏导读1. 气泡图介绍1)介绍2)参数说明 2. 普通气泡图3. 网格气泡图4. 自定义气泡图颜色5. 不同颜色气泡图6. 钟型气泡图7. 交互气泡图8. 打卡气泡图9. 动态气泡图 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到…

实战打靶集锦-020-Tre

提示:本文记录了博主一次艰难又失败的提权经历 目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 Apache探查4.1.1 adminer.php4.1.2 /cms/目录4.1.3 /info.php页面4.1.4 nikto扫描4.1.5 dirb扫描4.1.6 登录Adminer 5. 提权5.1 系统信息枚举5.2 定时任务枚举5…

SocketTools 11在所有HTTP客户端组件支持

SocketTools 11在所有HTTP客户端组件支持 在所有HTTP客户端组件中添加了对HTTP/2.0协议的支持。 更新了TLS 1.2(及更高版本)和SSH 2.0的安全选项,以使用Microsoft Windows 11和Windows Server 2022中提供的密码套件。较旧、安全性较低的密码套件已被弃用&#xff0…

21级计组硬件实验三-八位串行加法器验证

问题1: 小明同学正在做【半加器、全加器与八位串行加法器实验】,他画好了电路图,但还有不少困难,现在他求助于你,请你帮他解决。 答:选A 注释:A是与门,B是或门,C是同…

【cmake】cmake 实现交叉编译

在PC上开发时,我们可以直接在PC端编译、链接、运行,但是到了嵌入式环境,由于嵌入式的设备资源(CPU、RAM)无法和PC端相比,如果项目比较复杂,很难甚至不可能在设备上编译。因此,我们一…

vue diff算法与虚拟dom知识整理(9) 手写patch递归子节点上树,用自己写的patch实现虚拟节点替换

上文 我们做到让一个文字虚拟节点上树 但子节点显然还 没有完成 那这次我们继续 递归的话 我们需要换个思路 我们将 src下的入口文件 index.js代码改成这样 import h from "./snabbdom/h"; import patch from "./snabbdom/patch";const container docum…

Apache Zeppelin系列教程第七篇——运行paragraph的整个流程分析

Zeppelin运行paragraph的整个流程分析 前文分别讲述了,JdbcInterpreter、Interpreter、Zengine的流程,本文来主要串联起来paragraph的整个流程 前端 首先前端部分点运行的时候是通过websocket向后端发送请求的zeppelin-web/src/components/websocket/…

swp协议-1

Swp接口是UICC和CLF(非接前端)之间的面向比特流,点到点通信的协议。CLF是主设备(master),UICC是从设备(slave)。图SWP数据传输虽然是单线协议,但是是全双工数字传输。 1 …

电商项目之海量操作日志的实现

文章目录 1 问题背景2 前言3 思考4 解决思路5 交互6 工作原理7 伪代码实现7.1 安装并配置Canal Server7.2 Canal客户端拉取MQ消息7.3 Canal数据的转换7.4 定制自己的业务逻辑 1 问题背景 有时候客户做了某些操作却不认账,咱们又拿不出证据;有时候客户将账…

入参校验1

文章目录 一、简介1、快速失败(Fail Fast) 二、单字段类入参校验三、JSON实体类校验1、注解解析2、案例1、简单校验2、分组校验3、嵌套校验4、集合校验5、自定义校验 四、相关1、源码文件2、参考地址 一、简介 1、快速失败(Fail Fast) Spring Validation 默认会校验完所有字段…

GPT-4的免费使用方法分享(续)

GPT-4的免费使用方法分享_我爱OJ的博客-CSDN博客 在这篇博客里,我介绍了一些ChatGPT的一些使用方法,但可能有一定的缺陷,有的需要魔法,所以,今天我就来亲测一下,关于ChatGPT的一些免费使用技巧 目录 镜像…

代码随想录算法训练营第九天|KMP算法

记录一下KMP算法,本文摘录自《代码随想录》和部分b站视频帮你把KMP算法学个通透!(理论篇)_哔哩哔哩_bilibili最浅显易懂的 KMP 算法讲解_哔哩哔哩_bilibiliKMP字符串匹配算法2_哔哩哔哩_bilibili KMP算法 主要应用:字…

牛客小白月赛65

题目链接 牛客小白月赛65 A-牛牛去购物(枚举)B-牛牛写情书(字符串)C-牛牛排队伍(模拟)D-牛牛取石子(博弈)E-牛牛的构造(构造,思维) A-牛牛去购物…

怎么免费使用 ChatGpt,实用!

最近发现了一个可以免费、轻松使用 ChatGpt 的方法,随即做个记录,留着备忘,以后想用也能随时找到方法。 但是不保证该方法永远有效,仅当下有限,做个记录罢了。 因为我使用的是 windows 自带的浏览器 Microsoft Edge &a…