Unity3D之如何创建正确的像素大厨切的图不正确比在屏幕上

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
unity3d技术之playersettingsdefaultscreenheight 默认屏幕高度
下载积分:400
内容提示:unity3d技术之playersettingsdefaultscreenheight 默认屏幕高度
文档格式:DOCX|
浏览次数:63|
上传日期: 13:16:18|
文档星级:
全文阅读已结束,如果下载本文需要使用
 400 积分
下载此文档
该用户还上传了这些文档
unity3d技术之playersettingsdefaultscreenheight
关注微信公众号没有更多推荐了,
不良信息举报
举报内容:
Unity关于像素,Camera大小,以及分辨率的研究
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Unity3d游戏开发之如何使用烘焙贴图_百度知道
Unity3d游戏开发之如何使用烘焙贴图
我有更好的答案
你要用对shader才行啊,试试lightmap,把颜色和烘培的贴图都加上去。其实不用3dmax做烘培的,unity3d本身的烘焙就比较强大。
采纳率:79%
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&关于这篇文章的命名,实在不知道怎么命名好,大概功能就是:比如一张宽高为100x100的图片显示在屏幕上,那2D摄像头的Size值为多少时,屏幕上显示出来图片大小和图片的实际像素一致。
这里涉及到一个GL坐标和像素坐标值的转换比,这个比值我们可以自己设置~之后我们设置面上顶点的大小也是依据这个来设置的。
& & & & 比如上面的图的坐标系是世界坐标,而摄像机的坐标在原点(0,0,0),而且摄像机的Size属性为1那么我们在Size为1,而且屏幕的宽高比为3:2的情况下,摄像机所能看到的范围就如上图中橙色框框那样,也就是所能看到的高度y的世界坐标范围是-1到1,宽度x的世界坐标范围是-1.5到1.5 。那么我们就可以算出世界坐标和像素坐标的比值了。如果我们的屏幕宽高是480x320 (也是3:2的屏幕),那么如果显示在这个屏幕下,上图中,AB两点的高度是320,那么世界坐标高度就和屏幕的高度有个比值,即 2:320&再举个例子,假如有张宽高为100x100的图片,要显示在屏幕上,那它相对的世界坐标是的宽高又是多少呢?根据上面的比值可以算出来:100 * 2 / 320 = 0.625;& & & & 有这个比值,我们在用顶点生成面的时候就用图片的实际像素宽高乘以这个比值就能得到世界坐标的值鸟~
再写个程序简单的显示一张128x128的贴图在2D摄像头的size为1的境况测试下吧
using UnityE
using System.C
public class SimpleSprite : MonoBehaviour {
//标准摄像头的高度//
public float standardCameraS
//标准屏幕的高度//
public float standardH
private float glTopixelR
//素材求//
public Material spriteM
//顶点数//
private int verticesCount = 4;
// Use this for initialization
void Start () {
//计算像素和世界单位的比值//
glTopixelRatio = standardCameraSize * 2.0f / standardH
initSprite();
// Update is called once per frame
void Update () {}
//根据宽高生成对应的面//
private void initSprite(){
//获取图片的像素宽高//
int pixelHeight = spriteMaterial.mainTexture.
int pixelWidth = spriteMaterial.mainTexture.
Debug.Log("pixeW:" + pixelWidth + ",pixeH:" + pixelHeight);
//得到MeshFilter对象//
MeshFilter meshFilter = gameObject.GetComponent&MeshFilter&();
if(meshFilter == null){
//为null时,自动添加//
meshFilter = gameObject.AddComponent&MeshFilter&();
MeshRenderer meshRenderer = gameObject.AddComponent&MeshRenderer&();
meshRenderer.sharedMaterial = spriteM
//得到对应的网格对象//
Mesh mesh = meshFilter.
//三角形顶点的坐标数组//
Vector3[] vertices = new Vector3[verticesCount];
//得到三角形的数量//
int trianglesCount = verticesCount - 2;
//三角形顶点数组//
int[] triangles
= new int[verticesCount *3];
float glWidth = pixelWidth * glTopixelR
float glHeight = pixelHeight * glTopixelR
//以当前对象的中心坐标为标准//
vertices[0] = new Vector3(0, 0, 0);
vertices[1] = new Vector3(0, glHeight, 0);
vertices[2] = new Vector3(glWidth, 0, 0);
vertices[3] = new Vector3(glWidth, glHeight, 0);
mesh.vertices =
//绑定顶点顺序//
triangles[0] = 0;
triangles[1] = 1;
triangles[2] = 2;
triangles[3] = 1;
triangles[4] = 3;
triangles[5] = 2;
mesh.triangles =
mesh.uv = new Vector2[]{new Vector2(0,0), new Vector2(0,1), new Vector2(1,0), new Vector2(1,1)};
  上面是个简单显示一张图片的代码~
下面是测试结果,用ps加张图片(红色圈圈)比比看显示出来的图片宽高是不是和实际像素一样,结果大小是一样的~
&尊重他人的劳动成功,原文地址:
阅读(...) 评论()unity发布安卓版本怎样设置分辨率?_百度知道
unity发布安卓版本怎样设置分辨率?
我有更好的答案
其实 Unity3D 安卓版,对于不同的分辨率,我们只需要设置 一个唯一的屏幕显示区域比(说白了就是宽高比),这样显示区域就不会随分辨率的改变而拉升。上代码:using UnityEusing System.Cpublic class Resolution : MonoBehaviour {
public Camera mainC
void Start()
//Screen.SetResolution(, true, 60);
mainCamera = Camera.mainC
float screenAspect = 1280 / 720;
现在android手机的主流分辨。
mainCamera.aspect ---&
摄像机的长宽比(宽度除以高度)
mainCamera.aspect = 1.78f;
}}把此代码脚本绑定在
MainCamera 上就OK了,这样就不会导致不同分辨率下屏幕显示区域大小不一的问题!
采纳率:72%
具我所知,是设置不了的,只能让你的游戏去适应它的屏幕,比如让你的UI弄成屏幕自适应
怎样弄成自适应啊?
有两种方法,一种是用U3D自带的GUI系统,然后自己用代码实现,但这个系统自带的效率很低,不推荐另外一种是用第三方插件,比如NGUI,EGUI之类的,用这些插件做UI要弄成屏幕自适应稍微简单写,而且运行效率和开发效率都比系统自带的高.这些插件的屏幕自适应的用法你自己百度和在相关论坛都能找到!
本回答被提问者采纳
为您推荐:
其他类似问题
您可能关注的内容
安卓的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 关于像素的正确理解是 的文章

 

随机推荐