2016-09-12 13:57:27 c5138891 阅读数 8225
  • 3D数学在Unity中运用

    本课程主要是讲解3D数学知识在Unity中是如何运用?从坐标系到向量,矩阵,以及二叉树,行为树AI算法等知识讲解。将3D数学理论知识与实际开发结合起来。

    16372 人正在学习 去看看 姜雪伟

第一次写文章!

unity3d 开发项目适配问题处理,实现的结果是宽高比超出的部分相机直接裁掉留黑,如果要加背景可以再挂一个相机填补黑色,代码以横屏为例

using UnityEngine;

/// <summary>
/// 屏幕适配
/// </summary>
[RequireComponent(typeof(Camera))]
public class ScreenAdapt : MonoBehaviour
{
	public float screenHeight;
	public float screenWidth;

	void Start()
	{
		UpdateCamera ();
	}
	
	void UpdateCamera ()
	{
		screenHeight = Screen.height;
		screenWidth = Screen.width;

		Rect r = new Rect();
		if(screenHeight / screenWidth > 0.61f)//更方的屏幕 480*800
		{
			r.width = 1;
			r.height = (screenWidth * 0.61f) / screenHeight;
			r.x = 0;
			r.y = (1 - r.height) / 2f;
		}	
		else if(screenHeight / screenWidth < 0.56f)//更长的屏幕480*854
		{
			
			r.width = (screenHeight / 0.56f) / screenWidth;
			r.height = 1f;
			r.x = (1 - r.width) / 2f;
			r.y = 0;
		}
		else //在可适配区域不做处理480*800 - 480*854之间的
		{
			r.width = 1;
			r.height = 1;
			r.x = 0;
			r.y = 0f;
		}
		GetComponent<Camera>().rect = r;
	}
}

直接将脚本挂在需要适配的相机上即可,

原理就是修改的相机的视口


这样处理后,即可完美适配,建议pause/resume 后做一次刷新



http://blog.csdn.net/c5138891/article/details/52512881

2018-06-06 15:54:03 q764424567 阅读数 416
  • 3D数学在Unity中运用

    本课程主要是讲解3D数学知识在Unity中是如何运用?从坐标系到向量,矩阵,以及二叉树,行为树AI算法等知识讲解。将3D数学理论知识与实际开发结合起来。

    16372 人正在学习 去看看 姜雪伟

感觉这篇文章不错,转过来跟大家分享

原文作者:雷潮
原文链接:https://www.jianshu.com/p/95cb4621206e
原文來源:简书

1、游戏屏幕适配

屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑)
那么了解是适配之前首先要了解两个知识点:

1-1、什么是像素?

单位面积中构成图像的点的个数。
特点:单位面积内的像素越多,分辨率越高,图像的效果就越好。

1-2、什么是分辨率?

分辨率可以从显示分辨率与图像分辨率两个方向来分类。
示分辨率(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的像素有多少.分辨率的单位有:(dpi点每英寸)、lpi(线每英寸)和ppi(像素每英寸)。
特点:
图像的分辨率越高,所包含的像素就越多,图像就越清晰,印刷的质量也就越好。
同时,它也会增加文件占用的存储空间。

1-3、移动设备分辨率 –以iphone 为例

这里写图片描述

2、什么是适配?

什么是适配?

适应、兼容各种不同的情况

游戏开发中,适配的常见种类

¤系统适配
针对不同版本的操作系统进行适配,例如Unity3D 5.4系统

¤屏幕适配
针对不同大小的屏幕尺寸进行适配,例如Iphone5s,iphone7
iPhone的尺寸
3.5inch、4.0inch、4.7inch、5.5inch
iPad的尺寸
7.9inch、9.7inch
屏幕方向
竖屏
横屏

3、Unity3D 中的屏幕分辨

3-1.

屏幕的宽高比(Aspect Ratio) = 屏幕宽度/屏幕高度

3-2.

Unity2D中摄像机镜头的尺寸决定了我们实际看到游戏内容的多少,在编辑器中我们可以通过调整摄像机Camera的orthographicSize属性值来调整摄像机的大小
这里写图片描述
注:Unity3D中这个比例的默认值是100,即100像素等于1单位。
如果我们的游戏屏幕有640像素高,那么实际换算成单位高度则是6.4个单位,
当我们摄像机的orthographicSize值是3.2时,摄像机大小刚好与屏幕大小相等

4、Unity3D中的屏幕适配设置

4-1:像素适配设置(固定分辨率)

这里写图片描述

4-2、屏幕宽高比

屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度
这里写图片描述

5、Unity3D中的摄像机设置

Unity编辑器中只能直接调整摄像机的高度,那摄像机的宽度是如何确定的呢?
答案就是我们最前面提到的屏幕宽高比。Unity会根据当前屏幕实际的宽高比和摄像机的orthographicSize值来计算出摄像机的宽度值,即:
摄像机实际宽度 = 摄像机orthographicSize * 2 * 屏幕宽高比
即是
摄像机实际宽度 = 摄像机高度 * 屏幕宽高比

我举个例子说明一下,iPhone4的屏幕像素为640*960,宽高比为2:3,假设Pixels To Units值为100,那么如果设摄像机高度size值为4.8,那么摄像机实际宽度按照公式算出6.4,刚好就是屏幕的单位宽度。

6、Unity3D中的图片像素比设置

这里写图片描述

7、Unity3D:关于适配的一些UI问题解决

这里就是重中之重,也是坑点较多的地方

调整相机为设计尺寸,添加Canvas到场景中进行UI设计,但是Canvas默认大小和相机并不重合。

怎么办?

7-1:办法1:

调整Canvas的Render Mode属性为Screen Space - Camera:

将映射游戏内容的Camera拖入Render Camera中,下一个属性Plane Distance表示UI
与Camera的在Z轴距离(其实就是变相反映了UI的Z轴位置)。

接着在Canvas Scaler属性里将Ui Scale Mode属性设置为Scale With Screen Size,
表示Canvas会根据屏幕比例缩放。
下面的Reference Resolution,表示UI宽和高一半的大小。例如设计尺寸为640x960,
则x应为640 / 2 = 320,宽应为960 / 2 = 480。
下面的Screen Match Mode属性选中Match Width Or Height,表示采用宽度(上文有提到过)
或高度(Unity自带适配方式)适配。然后Match调整为0或1,0表示完全宽度适配,
1表示完全高度适配,其他值表示介于两者之间采用比例适配
这里写图片描述

7-2:办法2:

调整Canvas的Render Mode属性为World Space
1、将Event Camera设置为映射游戏内容的Camera。
2、然后调整Rect Transform组件中的Width和Height为设计尺寸的宽和高,同时将Scale属性的X和Y都调整为0.01(对应unity2d默认情况下像素Pixels与引擎单位Unit对应比例100)。这时,Canvas的宽高正好与摄像机相同。
这两种方法都可以将UI调整为与设计尺寸一致,并且在编辑器中运行与真机中运行效果保持一致。
这里写图片描述

7-3:办法3:

给摄像机挂下图脚本就可以搞定比例问题:
这里写图片描述

7-4:设定好就如下图所示

这里写图片描述
解决屏幕分辨率适配的问题,其实就是解决如何让游戏摄像机尺寸限定在给定范围的问题。

8、适配总结

1.游戏有效内容,指游戏中一定需要完整显示在屏幕上的内容;

2.游戏实际内容,指全部的游戏内容,包括有效内容和主要是为了适配多分辨率的或其他不重要的目的而增加的内容。

实际的分辨率适配问题与三个尺寸相关,他们分别是:摄像机尺寸,游戏内容尺寸(包括有效内容尺寸和无效内容尺寸)和实际屏幕尺寸。

9、了解游戏中的摄像机

相机(Camera)
是向玩家捕获和显示世界的设备。通过自定义和操纵摄像机,
你可以使你的游戏表现得真正独特。您在场景中摄像机的数量不受限制。
他们可以以任何顺序设定放置在屏幕上的任何地方,或在屏幕的某些部分。
这里写图片描述

9-1、摄像机属性:

这里写图片描述

Clear Flags 清除标识

确定了屏幕哪些部分将被清除,方便多个摄像机画不同的游戏元素
这里写图片描述
Skybox 天空盒:这是默认设置。屏幕上的任何空的部分将显示当前相机的天空盒。
如果当前的相机没有设置天空盒,它会默认在渲染设置(Render Settings )选择天空盒

Solid Color 纯色
任何空部分,屏幕显示为当前相机的背景色。
Depth Only 仅深度
如果你想绘制一个玩家的枪,又不让它内部环境被裁剪,你会设置深度为0的相机绘制环境,
和另一个深度为1的相机单独绘制武器。武器相机的清除标志(Clear Flags )应设置 为depth only。
Don’t Clear 不清除
此模式不清除颜色或深度缓存。每一帧在下一帧结束后绘制,看上去像是涂抹(smear-looking)的效果。
这在游戏中不常用,最好是在自定义着色器(custom shader)上使用。

Rendering Path-渲染路径

定义什么绘制方法被用于相机的选项
这里写图片描述
Use Player Settings 使用玩家设置:在玩家设置(Player Settings.)相机使用哪个渲染路径。
Vertex Lit 顶点光照 :所有被这个相机渲染的物体都将渲染成Vertex-Lit物体。
Forward 正向渲染:所有对象每材质渲染只渲染一次,和Unity 2.x中的标准一样
Deferred 延迟照明:所有物体将在无光照的环境渲染一次,然后在渲染队列尾部将物体的光照一起渲染出来。

Traget Texture-目标纹理:

这里写图片描述
渲染纹理 (Render Texture)包含相机视图输出。这会使相机渲染在屏幕上的能力被禁止。

补充:Vertex Lit:顶点光照

这个Shader是Vertex-Lit,是最简单的Shader之一。这个Shader渲染代价是非常小的
所有照射在该物体上的光源通过一次光能传递渲染完成并且只计算顶点光源。

因为是Vertex-Lit,所以不会有任何基于像素渲染的效果,例如:Light Cookies,Normal Mapping
和Shadows。这个Shader对模型的细分同样更加敏感,假如在很靠近立方体的地方放置一个
点光源,并且应用这个Shader,这个光源只会在此角落进行计算

General shader performance 通常的着色器性能
Unlit. This is just a texture, not affected by any lighting.�不发光。这只是一个纹理,不被任何光照影响
VertexLit. 顶点光照
Diffuse. 漫反射
Normal mapped. �法线贴图,比漫反射更昂贵:增加了一个或更多纹理(法线贴图)和几个着色器结构
Specular. This adds specular highlight calculation. �高光。这增加了特殊的高光计算
Normal Mapped Specular. Again, this is a bit more expensive than Specular. �高光法线贴图。这比高光更昂贵一点
Parallax Normal mapped. This adds parallax normal-mapping calculation. �视差法线贴图。这增加了视差法线贴图计算
Parallax Normal Mapped Specular..�视差高光法线贴图。这增加了视差法线贴图和镜面高光计算

http://www.ceeger.com/Components/shader-NormalVertexLit.html
http://www.ceeger.com/Components/shader-Performance.html

2013-03-25 10:22:14 eric_XJJ 阅读数 3146
  • 3D数学在Unity中运用

    本课程主要是讲解3D数学知识在Unity中是如何运用?从坐标系到向量,矩阵,以及二叉树,行为树AI算法等知识讲解。将3D数学理论知识与实际开发结合起来。

    16372 人正在学习 去看看 姜雪伟

       几日前,笔者碰到一个NGUI的屏幕尺寸的适配问题。情况是这样子的:Unity3d编译了一个iPhone版的Xcode工程,非Universal版,进入真机测试的时候,发现当该iPhone版的工程在iPad2真机上NGUI出现了问题,如下图:


 

     

        由图片可分析出,NGUI的位置都是正确的,但是大小不正确;显然这是由于屏幕分辨率导致的问题,因为NGUI用的是高清图,并且iPad屏幕是非retina屏幕,NGUI的底层代码根据这个屏幕分辨率来缩放,如果屏幕是全屏的,基本上没啥问题;进一步可以锁定问题出在编译的Iphone版工程运行在iPad上面,由于Unity3d的摄像头视野大小是iPhone的屏幕大小,但是实际的屏幕分辨率却是非retina,而图片却是retina导致在非retina屏幕上显示出了retina图片的真实像素尺寸(本来应该缩小一倍)。找到问题的原因后,就可以着手解决了。

        由于查看Unity3d的Screen这个类提供的API没有查询屏幕的分辨率是否是retina屏幕的,只能通过Objective-c的API查询。在这里,笔者的思路是,通过在Unity3d层的NGUI的底层NGRoot.cs(NGUI负责屏幕分辨率适配的类)这个类的C#脚本中向Xcode层的Objective-c语言发送消息查询当前的屏幕是非retina屏,是否iPad硬件,再加上一个根据当前Xcode的版本的开关变量(比如是iPhone版就打开,如果是iPad版或者Universal版就关闭)一起判断,决定是否要将当前屏幕的分辨率乘以2(NGUI底层是用某个常量除以当前屏幕的分辨率来适配屏幕的)再来计算缩放。这涉及到Uinty3d层与Xcode层的通信问题。

       幸好,C#给我们提供了多平台适应的API,使用System.Runtime.InteropServices,可以定义一个接口,在c#项目外实现。这里可以在C#脚本里定义在需要在Xcode里实现的接口,在接口前加上[DllImport("__Internal")]即可。代码实例如下:

在Unity3d层的代码:

//----------------------------------------------
//            NGUI: Next-Gen UI kit
// Copyright © 2011-2012 Tasharen Entertainment
//----------------------------------------------

using UnityEngine;
using System.Runtime.InteropServices;

/// <summary>
/// This is a script used to keep the game object scaled to 2/(Screen.height).
/// If you use it, be sure to NOT use UIOrthoCamera at the same time.
/// </summary>

[ExecuteInEditMode]
[AddComponentMenu("NGUI/UI/Root")]
public class UIRoot : MonoBehaviour
{
	public bool automatic = true;
	public int manualHeight = 800;
	[DllImport ("__Internal")]
	public static extern bool isDoubleScreen ();
	bool isIPhonePlatform = false;
	
	Transform mTrans;

	void Start ()
	{
		mTrans = transform;

		UIOrthoCamera oc = GetComponentInChildren<UIOrthoCamera> ();
		
		if (oc != null) {
			Debug.LogWarning ("UIRoot should not be active at the same time as UIOrthoCamera. Disabling UIOrthoCamera.", oc);
			Camera cam = oc.gameObject.GetComponent<Camera> ();
			oc.enabled = false;
			if (cam != null)
				cam.orthographicSize = 1f;
		}
		if (Application.platform == RuntimePlatform.IPhonePlayer) {
			isIPhonePlatform = true;
		}
                        
	}
	
	
	void Update ()
	{
		manualHeight = Mathf.Max (2, automatic ? Screen.height : manualHeight);
		
		if (isIPhonePlatform) {
			if (UIRoot.isDoubleScreen()) {
				manualHeight *= 2;
			}
		}

		float size = 2f / manualHeight;
		Vector3 ls = mTrans.localScale;

		if (!Mathf.Approximately (ls.x, size) ||
			!Mathf.Approximately (ls.y, size) ||
			!Mathf.Approximately (ls.z, size)) {
			mTrans.localScale = new Vector3 (size, size, size);
		}
	}
}

在Xcode层的代码:


#pragma mark - logic
#define isRetina ([UIScreen mainScreen].currentMode.size.width / [UIScreen mainScreen].bounds.size.width == 2 ? YES : NO)
//定义高清图片的开关 ,1打开,0关闭
#define isRetinaPicture 1
//是否是iPhone程序运行在iPad上
#define isPhoneAppOnPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && [[[UIDevice currentDevice] model] hasPrefix:@"iPad"])

bool isDoubleScreen () {
    if (!isRetina && isPhoneAppOnPad && isRetinaPicture) {
        return true;
    }
    return false;
}


  解决后的NGUI在iPad屏幕上的显示如下图:


  


    好了,上边介绍了如何在Unity3d层向Xcode层发送查询消息解决了NGUI屏幕分辨率适配的问题。接下来再介绍如何在Xcode层向Unity3d层发送消息,在这里,Unity3d提供了一个API来实现,即

void UnitySendMessage(const char* obj, const char* method, const char* msg);

         这个API有三个参数,第一个参数是Unity3d里接收消息的物体的名称,第二个参数是Unity3d绑定的物体的脚本里实现的方法名称,第三个参数是是第二个参数的实现方法里需要接收传递的数据参数。代码实例如下:

   Xcode层的代码:

NSString *param = @"param";
UnitySendMessage("XcodeAdapter", "methodFromXcode", [param cStringUsingEncoding:NSUTF8StringEncoding]);


Unity3d层的代码:

using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
 

//该脚本绑定在Unity3d场景里一个叫XcodeAdapter的GameObject上
public class XcodeAdapter : MonoBehaviour {
	public void methodFromXcode (string param)
	{
		Debug.Log(param + "~~~~!!!!");
	}
}


         本文结束~~~~




2015-02-28 17:29:02 yuxikuo_1 阅读数 941
  • 3D数学在Unity中运用

    本课程主要是讲解3D数学知识在Unity中是如何运用?从坐标系到向量,矩阵,以及二叉树,行为树AI算法等知识讲解。将3D数学理论知识与实际开发结合起来。

    16372 人正在学习 去看看 姜雪伟

转载自:http://blog.csdn.net/onerain88/article/details/11713299

NGUI在Unity3D游戏开发中非常常用,而NGUI对于每一个UI场景,都是以一个UIRoot为UI游戏对象树的根的,那么这个UIRoot是起什么作用的呢?

先简单看一下UIRoot中的基本属性

UIRoot游戏对象的属性只有4个,分别是缩放规则,手动高度,最小高度和最大高度

而正是这4个属性,将影响整个UI场景中整体的缩放比例,当设置好这4个属性之后,UIRoot游戏对象的相对缩放值(LocalScale)将会生成并且不能被直接修改(NGUI中很多属性都是不能直接被修改的,这种控制是在UIRoot脚本中,通过设置[ExecuteInEditMode]做到的,其相对缩放值是根据UIRoot的4个属性计算出来的),那么这4个属性分别是什么含义呢?

(吐槽一下,也许这里的用户体验并不足够友好,因为Manual Height和Minimum Height, Maximum Height并不会同时起作用,如果能做到在选择Scaling Style时动态的切换,使用者也许能更清楚它们之间的关系)


1.Scaling Style (缩放类型)

这是一个简单的枚举变量,包括三个枚举值

  1. public enum Scaling  
  2.     {  
  3.         PixelPerfect,  
  4.         FixedSize,  
  5.         FixedSizeOnMobiles,  
  6.     }  
(FixedSize和FixedSizeOnMobiles类似,并且后者只添加了对ios和android平台的判断,所以前者可以替代后者使用)

这里只讨论PixelPerfect和FixedSize的区别,两者都是针对于所有在此UIRoot之下的UI组件而言的,也可以认为是在此UIRoot下,整个游戏屏幕的尺寸的缩放类型!


2.Manual Height和Minimum Height, Maximum Height (手动高度和最小高度,最大高度)

Manual Height和Minimum Height, Maximum Height不会同时对此UIRoot起作用,当选择Scaling Style为PixelPerfect时,我们需要设置Minimum Height, Maximum Height;而当Scaling Style为FixedSize或FixedSizeOnMobiles时,我们需要设置Manual Height。(这就是我前面吐槽的原因)


3.使用

(1)PexelPerfect和Minimum Height, Maximum Height

这个组合主要用于我们期望所有的UI纹理都“尽量”不进行缩放,所谓“尽量”的程度,则是取决于Minimum Height和Maximum Height,Minimum Height表示当设备分别率小于此设置值时,根据此设置值对UIRoot进行缩放;Maximum Height表示当设备分辨率大于此设置值时,根据此设置值对UIRoot进行缩放(UIRoot是UI游戏对象树的根,修改UIRoot的缩放,则会影响整棵UI树的缩放)

(2)FixedSize和Manul Height

这个组合主要用于我们期望所有的UI纹理都进行“合适”的缩放,所谓“合适”缩放的原则,则是根据Manual Height设置值,当设备分辨率的高度值不同于此设置值时,则根据其比例(即Manual Height / Screen Height)对整棵UI树的进行“等比”缩放(宽度的缩放比也是此比例值),这样,我们就可以做一套资源,在不同尺寸的分辨率最好的“不变形”的适配了

(3)交集

前面两组在什么情况下等同呢?

Manual Height == Minimum Height == Maximum Height 

推导过程,呵呵~~

具体可参考UIRoot中activeHeight属性和GetPixelSizeAdjustment的计算过程


4.这也许并不够

基于以上推到,当我们以1024x768为标准分辨率做一套UI资源(也就是选择FixedSize并且Manual Height=768),似乎可以满足百分之90以上的机型了,而为什么是1024x768呢?

既然我们已经容忍在除1024x768之外的其他设备上进行等比缩放了,那为什么不是960x640呢?

计算一下1024x768的宽高比=1.33,960x640的宽高比=1.5,这就是移动设备的分辨率比例的全部了吗?

当然不是,iphone5的比例就要大于1.5,还有各种奇葩的android设备呢,比如夏新的n828就是960x540,宽高比=1.78

那为什么以1024x768为标准呢?

因为1.33的宽高比,当我们的1024x768的资源到960x640的设备上时会有什么现象?

根据Manual Height / Screen Height的比例可知,我们需要缩放768 / 640 = 1.2倍,假设是一张1024x768的纹理,高度缩放1.2倍变为了640,宽度也要相应缩放1.2倍变为853(保证等比缩放不变形),也就是说1024x768的资源放到960x640上反而两边有了黑边,这是我们可以容忍的,我们可以做一个很大的背景或者拉伸,保证UI组件不变形即可,很多游戏都是这么做的,比如植物大战僵尸在iphone5和ipad上看到的背景视野并不一样大!

当放到夏新的机器上呢?

我们需要缩放768 / 540 = 1.4倍,宽度1024 / 1.4 = 731,这是可以的,只是看起来更怪一些,因为两边的黑边相对比例更大了(960 - 731=229的黑边区域)

而我表示android机器的分辨率奇葩到只有想不到,没有做不到的程度,也许宽高比1.7并不是终点,当遇到1.8之后,黑边的相对比例会更大。。。


5.问题又来了

假设我们的游戏类型更适合iphone手机玩,不太适合ipad,所以我希望能以960x640为标准做一套资源,可以吗?

我只能说不太可以,因为你要在设计UI组件的大小做限制了,为什么需要做限制?

假设我有一张纹理是960x640大小的,在iphone上铺满整屏,根据我们的设置(FixedSize和Manual Height=640),拿到1024x768的分辨率上,高度640 / 768 = 0.83,为了保证等比缩放,宽度960 / 0.83 = 1156,不幸的事情发生了,1156 > 1024,这个UI组件宽度超过了屏幕的宽度,被裁剪了。。。这是我们不能容忍的,或许你可以说我们尽量不做这种尺寸的UI,OK,你可以对UI尺寸加限制,但是当面对android那些奇葩的分辨率的时候,你会发现限制越来越大,这也许会让美术和策划疯掉!


6.解决方案

当我们花上一些时间去观察现在移动设备的分辨率时,虽然奇葩很多,但是还是有一些规律的,规律的在于宽高比而不在于具体尺寸,大体上划分一下宽高比在1.3,1.5,1.7的范围上的居多(基本是全部吧!)即便是再有1.2,1.8的比例也无妨。。。

NGUI为我们提供的方案只有以各种高度为衡量标准是不够的,我们应该加上一种以宽度为衡量标准的缩放类型

而对于UI资源的标准,我们选取960x640,宽高比为1.5

这样,当我们在兼容大于1.5的尺寸的时候,使用NGUI的现有方案;当我们在兼容小于1.5的尺寸的时候,使用以宽度为衡量标准

也就是说有一个类似Manual Width的属性,当小于1.5时,我们使用Manual Width / Screen Width得出整棵UI树的缩放比例!

这样做的好处是“黑边”区域不会太大,并且不需要对UI组件的大小做限制!


2014-12-31 20:31:02 suntaojiaxin 阅读数 612
  • 3D数学在Unity中运用

    本课程主要是讲解3D数学知识在Unity中是如何运用?从坐标系到向量,矩阵,以及二叉树,行为树AI算法等知识讲解。将3D数学理论知识与实际开发结合起来。

    16372 人正在学习 去看看 姜雪伟
  void screenadaptorst()//屏幕适配
    {
        int kuandu = Screen.width;//获取屏幕宽度 
       #if UNITY_ANDROID
        if (Application.platform == RuntimePlatform.Android)
        {
            
        }  
      #elif  UNITY_IPHONE  
        if (Application.platform == RuntimePlatform.IPhonePlayer)
        {
            
        }
      #endif

    }

参考地址:http://blog.csdn.net/dingxiaowei2013/article/details/18454131

Unity3D_屏幕适配

阅读数 120

没有更多推荐了,返回首页