Unity 图片资源的适配

前言

 

最近小编做Unity项目时,发现在资源处理这方面和Android有所不同;例如:Android的资源文件夹res下会有着mipmap-mdpi,mipmap-hdpi,mipmap-xhdpi,mipmap-xxhdpi,mipmap-xxxhdpi这五个文件夹,这是因为我们一般在蓝湖UI设计图上下载的图片资源都是对应这五种分辨率的图片,而在Unity中,图片资源的分辨率的自适应却没有这个概念;不过Unity倒是有一个Canvas Scaler组件可以做自适应处理;

Android和Unity加载资源的区别

作为一个习惯写Android的人来说,能不能让自己封装一套Image分辨率的自适应脚本呢?当然可以了,我们可以利用Unity内置的资源加载函数来做,在Android中,资源基本都是存放在res文件夹中的,我们获取资源也是通过R.Layout来加载资源相对应的文件夹。

Android加载资源

通过上图,大家可以看到Android中的图片资源放置在mipmap文件夹中的,五张图片的分辨率从小到大依次排列的,而minmap文件夹又放在res文件中的的,而我们在UI语句中想要加载图片资源时都是使用R.minmap.图片资源名来使用,如下图所示

其实应该还要有 ldpi文件夹,这样就形成了低中高三种分辨率的图片文件夹;

屏幕dpi值 (图像每英寸长度内的像素点数);

按照dpi来算的话:

dpi范围密度
0dpi ~ 120dpildpi
120dpi ~ 160dpimdpi
160dpi ~ 240dpihdpi
240dpi ~ 320dpixhdpi
320dpi ~ 480dpixxhdpi
480dpi ~ 640dpi          xxxhdpi

假如手机屏幕密度时xxhdpi,那么mipmap-xxhdpi文件夹下的图片就是最适合的图片。若图片放在其他mipmap中,图片被缩放。

系统自动去其他文件下找图片的顺序:高密度 -> 低密度

Android将实际的屏幕密度分为四个通用尺寸(low,medium,high,and extra high) 
一般情况下的普通屏幕:ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi 
对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚 

按照屏幕尺寸来算的话:

密度建议尺寸
mipmap-mdpi48*48
mipmap-hdpi72*72
mipmap-xhdpi96*96
mipmap-xxhdpi144*144
mipmap-xxxhdpi192*192


 

Unity加载资源

好了,以上就是小编简单给大家带来的Android与Unity加载资源的不同方式,需要详细了解的话可以翻我其他的文章讲解

Unity实战演练

ImageAdapter.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class ImageAdapter : MonoBehaviour
{public Text text;public GameObject imageObject;//不同分辨率图片路径string path_hdpi = "Images/mipmap-hdpi/image_hdpi";string path_mdpi = "Images/mipmap-mdpi/image_mdpi";string path_xdpi = "Images/mipmap-xhdpi/image_xhdpi";string path_xxdpi = "Images/mipmap-xxhdpi/image_xxhdpi";string path_xxxdpi = "Images/mipmap-xxhdpi//image_xxxhdpi";// Start is called before the first frame updatevoid Start(){Sprite image;//判断dpi,来确认适合哪种分辨率的图片资源if (Screen.dpi >= 120 && Screen.dpi < 160){image = Resources.Load<Sprite>(path_mdpi);text.text = "当前屏幕每寸的像素点值: " + Screen.dpi + '\n'+ "当前加载的图片为: " + path_mdpi;}else if (Screen.dpi >= 160 && Screen.dpi < 240){image = Resources.Load<Sprite>(path_hdpi);text.text = "当前屏幕每寸的像素点值: " + Screen.dpi + '\n'+ "当前加载的图片为: " + path_hdpi;}else if (Screen.dpi >= 240 && Screen.dpi < 320){image = Resources.Load<Sprite>(path_xdpi);text.text = "当前屏幕每寸的像素点值: " + Screen.dpi + '\n'+ "当前加载的图片为: " + path_xdpi;}else if (Screen.dpi >= 320 && Screen.dpi < 480){image = Resources.Load<Sprite>(path_xxdpi);text.text = "当前屏幕每寸的像素点值: " + Screen.dpi + '\n'+ "当前加载的图片为: " + path_xxdpi;Debug.Log(image.name);}else if (Screen.dpi >= 480 && Screen.dpi < 640){image = Resources.Load<Sprite>(path_xxxdpi);text.text = "当前屏幕每寸的像素点值: " + Screen.dpi + '\n'+ "当前加载的图片为: " + path_xxxdpi;}else{text.text = "当前屏幕每寸的像素点值: " + Screen.dpi;}//将读取到的图片资源加载到游戏物体上imageObject.GetComponent<Image>().sprite = Resources.Load<Sprite>(path_xxdpi);}
}

效果图:

屏幕相关概念分享

分辨率 :
是指屏幕上有横竖各有多少个像素 


屏幕尺寸 :
指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 
android将屏幕大小分为四个级别(small,normal,large,and extra large)


屏幕密度 :
每英寸像素数 

手机可以有相同的分辨率,但屏幕尺寸可以不相同


对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚 

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

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

相关文章

睡眠模式下如何快速唤醒电脑,看这里!

这篇文章解释了如何唤醒正在睡觉的电脑,以及如果正常方法不起作用该怎么办。 一、如何从睡眠中唤醒电脑 不管你使用的是什么操作系统,关闭睡眠模式就像唤醒电脑一样简单,你可以通过某种方式与电脑交互来完成: 移动鼠标 滑动触摸板 按键盘上的任意键 有些设备有点不同,只…

前端需要理解的HTML知识

HTML&#xff08;超文本标记语言&#xff0c;HyperText Markup Language&#xff09;不是编程语言&#xff0c;而是定义了网页内容的含义和结构的标记语言。。“超文本”&#xff08;hypertext&#xff09;是指连接单个网站内或多个网站间的网页的链接。HTML 使用“标记”&…

C++信息学奥赛1119:矩阵交换行

解题思路&#xff1a;当输出时换行 解题程序&#xff1a; #include<iostream> using namespace std; int main() {int arr[5][5];// 输入矩阵元素for(int i0;i<5;i){for(int j0;j<5;j){cin>>arr[i][j];}} int n,m;cin>>n>>m;// 根据条件进行矩…

java八股文面试[数据结构]——Map有哪些子类

知识来源&#xff1a; 【23版面试突击】 用过哪些Map类&#xff0c;都有什么区别&#xff0c;HashMap是线程安全的吗&#xff1f;_哔哩哔哩_bilibili https://www.cnblogs.com/bubbleboom/p/12694013.html

OpenCV中QR二维码的生成与识别(CIS摄像头解析)

1、QR概述 QR(Quick Response)属于二维条码的一种&#xff0c;意思是快速响应的意思。QR码不仅信息容量大、可靠性高、成本低&#xff0c;还可表示汉字及图像等多种文字信息、其保密防伪性强而且使用非常方便。更重要的是QR码这项技术是开源的&#xff0c;在移动支付、电影票、…

Php“牵手”淘宝商品快递费用数据采集方法,淘宝API接口申请指南

淘宝天猫商品快递费用接口 API 是开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取商品的详细信息&#xff0c;包括商品的标题、描述、图片&#xff0c;发货地址&#xff0c;快递费用&#xff0c;区域ID&#xff0c;等信息。在电商平台的开发中&#xff0c;快递费…

使用ctcloss训练矩阵生成目标字符串

首先我们需要明确 c t c l o s s ctcloss ctcloss是用来做什么的。比如说我们要生成的目标字符串长度为 l l l&#xff0c;而这个字符串包含 s s s个字符&#xff0c;字符串允许的最大长度为 L L L&#xff0c;这里我们认为一个位置是一个时间步&#xff0c;就是一拍&#xff0…

2023网络建设与运维模块三:服务搭建与运维

任务描述: 随着信息技术的快速发展,集团计划2023年把部分业务由原有的X86架构服务器上迁移到ARM架构服务器上,同时根据目前的部分业务需求进行了部分调整和优化。 一、X86架构计算机操作系统安装与管理 1.PC1系统为ubuntu-desktop-amd64系统(已安装,语言为英文),登录用户…

Python之Qt输出UI

安装PySide2 输入pip install PySide2安装Qt for Python&#xff0c;如果安装过慢需要翻墙&#xff0c;则可以使用国内清华镜像下载&#xff0c;输入命令pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple PySide2&#xff0c;如下图&#xff0c; 示例Demo i…

2023第四届中国白茶始祖文化节在世界白茶发源地福鼎举办

天下白茶&#xff0c; 源于太姥。农历七月初七&#xff0c;是中国白茶始祖太姥娘娘羽化成仙的纪念日&#xff0c;8月22日上午由福鼎市茶业协会、福鼎市中国白茶始祖太姥文化研究会指导&#xff0c;由福鼎市太姥山茶业商会主办&#xff0c;由福建省天湖茶业有限公司、福建品品香…

最长有效括号——力扣32

int longestValidParentheses(string s){int res=0, n=s.size();int left=0

Cyanine3 NHS ester生物分子的标记与共价结合1032678-38-8

​欢迎来到星戈瑞荧光stargraydye&#xff01;小编带您盘点&#xff1a; Cyanine3 NHS ester是一种荧光染料&#xff0c;可用于将含有游离氨基&#xff08;-NH2&#xff09;的生物分子如蛋白质、抗体、肽段、核酸等进行标记和共价结合。这个过程通常称为NHS酯化反应&#xff0c…

2023年7月天猫糕点市场数据分析(天猫数据怎么看)

烘焙食品行业是近几年食品领域比较火热的赛道之一&#xff0c;随着居民饮食结构的变化&#xff0c;人均消费水平的上升&#xff0c;蛋糕、面包等烘焙糕点越发成为消费者饮食的重要组成部分。同时&#xff0c;在烘焙糕点市场中&#xff0c;老品牌不断推新迭变&#xff0c;新品牌…

SpringBoot内嵌Tomcat连接池分析

文章目录 1 Tomcat连接池1.1 简介1.2 架构图1.2.1 JDK线程池架构图1.2.2 Tomcat线程架构 1.3 核心参数1.3.1 AcceptCount1.3.2 MaxConnections1.3.3 MinSpareThread/MaxThread1.3.4 MaxKeepAliveRequests1.3.5 ConnectionTimeout1.3.6 KeepAliveTimeout 1.4 核心内部线程1.4.1 …

设计模式——开闭原则

文章目录 基本介绍看下面一段代码方式 1 的优缺点改进的思路分析 基本介绍 开闭原则&#xff08;Open Closed Principle&#xff09;是编程中最基础、最重要的设计原则 一个软件实体如类&#xff0c;模块和函数应该对扩展开放(对提供方)&#xff0c;对修改关闭(对使用方)。用抽…

SpringBoot+WebSocket搭建多人在线聊天环境

一、WebSocket是什么&#xff1f; WebSocket是在单个TCP连接上进行全双工通信的协议&#xff0c;可以在服务器和客户端之间建立双向通信通道。 WebSocket 首先与服务器建立常规 HTTP 连接&#xff0c;然后通过发送Upgrade标头将其升级为双向 WebSocket 连接。 WebSocket使得…

设计模式(3)抽象工厂模式

一、概述&#xff1a; 1、提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无须指定它们具体的类。 2、结构图&#xff1a; 3、举例代码&#xff1a; &#xff08;1&#xff09; 实体&#xff1a; public interface IUser {public void insert(User user);public…

亚马逊云科技 云技能孵化营 初识机器学习

目录 前言 一、课程介绍 二、什么是机器学习 三、机器学习算法进阶过程 四、亚马逊云科技能给我们什么 总结 前言 近期参加了“亚马逊云科技 云技能孵化营”&#xff0c;该孵化营的亚马逊云科技培训与认证团队为开发者准备了云从业者的精要知识及入门课程&#xff0c;帮助…

typora的样式的修改

typora首先是一个浏览器&#xff0c; 当我们在typora的设置里面勾选开启调试模式之后&#xff0c; 我们在typora里面右键就会有“检查元素” 这个选项 首先右键 ----》检查元素 将普通字体变颜色 关于Typora修改样式 破解版的typora样式太单调&#xff1f;想让笔记可读性更高…

会计资料基础

会计资料 1.会计要素及确认与计量 1.1 会计基础 1.2 六项会计要素小结 1.3 利润的确认条件 1.3.1 利润的定义和确认条件 1.4 会计要素及确认条件 2.六项会计要素 2.1 资产的特征及其确认条件 这部分资产可以给企业带来经济收益&#xff0c;但是如果不能带来经济利益&#xff…