Unity NGUI 网络斗地主 -界面制作

源文件在群(63438968群共享!)

@灰太龙

这一节说一下NGUI的界面摆放,并且教会大家使用NGUI的自适应功能!

在这里感谢@Gamer,是他给我的一些指教和资料!

1.首先在菜单栏中选择NGUI->Open->UI Wizard,这个时候会弹出一个窗体

其中,默认的层是Default,如果是这个层的话,就会有问题!

自己试一试就知道了,在这里不阐述了!

(注解:新建Layer,在Inspector中,最后一个命令Add Layer...添加一个层,即可,名字可以任意取!)

那么会在Hierarchy视图中自动生成几个物体,截图:

UI Root(2D)为根物体,Camer为UI摄像机,

在这儿删除两个物体,

1.UI Root(2D)身上的脚本,并且将这个物体的缩放值(x,y,z)都改成1

2.删除Anchor物体!

在Camera上添加一个脚本,截图:

这个脚本随后上传,其中Screen Width和Screen Height为在Game视图中的窗口大小,(点击Game视图中的Stats按钮,可以看到当前游戏窗口的大小的),经过以上步骤的操作,控件都会是自适应的!

贴上MyCamera.cs脚本

   using UnityEngine;
using System.Collections;
using System.Collections.Generic;
// <summary>
/// This is used to decide how the camera rendering result to draw to screen.
/// </summary>
public enum Camera2DStretchMode
{
None,
StretchFit,
AspectStretchFit,
} /// <summary>
/// A Camera2D is a camera through which the player views the world.
/// </summary>
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
public class MyCamera : MonoBehaviour
{
public static Rect cameraRect;
/// <summary>
/// The width of the target screen window in pixels.
/// </summary>
public float screenWidth = ; /// <summary>
/// The height of the target screen window in pixels.
/// </summary>
public float screenHeight = ; /// <summary>
/// Camera's half-size in orthographic mode
/// </summary>
public float orthographicSize
{
get
{
return _orthographicSize;
} set
{
_orthographicSize = value; float aspect = (float)screenWidth / (float)screenHeight; screenHeight = 2f * _orthographicSize;
screenWidth = screenHeight * aspect;
}
} [SerializeField]
private float _orthographicSize = ; /// <summary>
/// This is used to decide how the camera rendering result to draw to screen.
/// </summary>
public Camera2DStretchMode stretchMode = Camera2DStretchMode.StretchFit; void Reset()
{ } void OnDestroy()
{ } private bool isOpenGL = false;
void Awake()
{
} void resetCamera()
{
orthographicSize = screenHeight * 0.5f; camera.orthographic = true;
camera.orthographicSize = screenHeight * 0.5f;
camera.aspect = (float)screenWidth / (float)screenHeight; int mask = ;
int i = ; float hw = screenWidth * 0.5f;
float hh = screenHeight * 0.5f; if (isOpenGL)
camera.projectionMatrix = Matrix4x4.Ortho(-hw, hw, -hh, hh, 0.0f, 1024f);
else
{
camera.projectionMatrix = Matrix4x4.Ortho(-hw + 0.5f, hw + 0.5f, -hh - 0.5f, hh - 0.5f, -0.01f, 1024f);
} if (Screen.width <= 0f || Screen.height <= 0f)
return; if (stretchMode == Camera2DStretchMode.None)
{
camera.pixelRect = new Rect((Screen.width - screenWidth) * 0.5f, (Screen.height - screenHeight) * 0.5f, screenWidth, screenHeight);
} if (stretchMode == Camera2DStretchMode.StretchFit)
{
camera.pixelRect = new Rect(0f, 0f, Screen.width, Screen.height);
} if (stretchMode == Camera2DStretchMode.AspectStretchFit)
{
float cameraAspect = (float)screenWidth / (float)screenHeight;
float screenAspect = (float)Screen.width / (float)Screen.height; if (screenAspect >= cameraAspect)
{
float h = Screen.height;
float w = Screen.height * cameraAspect;
camera.pixelRect = new Rect((Screen.width - w) * 0.5f, 0f, w, h);
}
else
{
float w = Screen.width;
float h = w * ((float)screenHeight / (float)screenWidth);
camera.pixelRect = new Rect(, (Screen.height - h) * 0.5f, w, h);
} } cameraRect = camera.pixelRect;
} void OnPreRender()
{
resetCamera(); } void OnEnable()
{
isOpenGL = SystemInfo.graphicsDeviceName.ToUpper().IndexOf("OPENGL") >= ;
resetCamera();
}
}

现在可以添加控件了,点击NGUI->Open->Widget Tool来添加控件了,添加控件比较简单!

下一篇 NGUI的图集 Altas

Unity NGUI 网络斗地主 -界面制作的更多相关文章

  1. Unity NGUI 网络斗地主 -制作图集 Atlas

    Unity NGUI 网络斗地主 -制作图集 Atlas by @杨海龙 开发环境   Win7+Unity4.2.1f4+NGUI 3.0.4版本 这一节告诉大家如何制作(图集)Atlas! 1.首 ...

  2. Unity NGUI 网络斗地主 -发牌 脚本交互

    Unity NGUI 网络斗地主 -发牌 脚本交互 @By 灰太龙 Unity4.2.1f4 NGUI 3.0.4 本篇说的问题是脚本与控件的交互! 现在对界面进行了改进,先看副图! 1.制作发牌效果 ...

  3. Unity NGUI 3.0.4版本 制作网络版斗地主

    Unity NGUI 3.0.4版本 @by 灰太龙  开发环境 Win7旗舰版 Unity 4.2.1f4 本文就写个开门篇,告诉大家怎么用NGUI,第一步导入NGUI 3.0.4版本! 1.启动U ...

  4. Unity网络斗地主 服务端

    Unity网络斗地主  服务端 @by梦想之家2工作室 阿龙 已经做好了服务器框架,并且能实现服务器给客户端分牌的问题!

  5. Unity 网络斗地主 判断牌的类型

    Unity 网络斗地主  牌的类型 web版本演示地址:   http://www.dreamhome666.com/Desktop.html 在上个版本中,下面的角色在牌的后面,可以将角色做为一个P ...

  6. Unity 网络斗地主 牌的一些算法

    Unity 网络斗地主  牌的一些算法 在这儿说一下,我的项目是用svn的方式,上传在https://v2.svnspot.com/18666451713.doudizhu这个svn上,大家可以下载T ...

  7. BMFont中文字体图集制作的方法~(for unity ngui)

    BMFont中文字体图集制作的方法~(for unity ngui) 好吧~似乎这个问题困扰了很多人,游戏开始中文化是个不错的事儿啊,这里我就做下说明,如何制作中文字体图集~ 这里的字库图集的制作更多 ...

  8. 自制Unity小游戏TankHero-2D(1)制作主角坦克

    自制Unity小游戏TankHero-2D(1)制作主角坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...

  9. Unity iOS混合开发界面切换思路

    Unity iOS混合开发界面切换思路 最近有很多博友QQ 私信 或则 留言联系我,请教iOS和Unity界面之前相互切换的问题,源代码就不私下发你们了,界面跳转功能的代码我直接贴到下面好了,顺带说i ...

随机推荐

  1. python第三方库推荐 - 通过ntplib在windows上同步时间

    很多时候我们有通过程序脚本同步校正北京时间的需求. 在linux上同步时间比较方便,安装个ntpdate软件就行了. 但是在windows的要同步时间比较麻烦. 这时想到的就是从网络获取一个准确的时间 ...

  2. java取得整数部分 代码

    Pattern p1 = Pattern.compile("[0-9]*"); Matcher m1 = p1.matcher("100.0"); boolea ...

  3. Block之变量作用域

    在使用block的过程中经常会调用不同类型.不同作用域的变量,如果对这些变量作用域的理解稍有偏差,就会出现问题.故此特意整理出block中会经常使用到的几种变量,如有补充,欢迎指出. 1. 局部变量 ...

  4. CentOS 通过yum来升级php到php5.6,yum upgrade php 没有更新包怎么办?

    在文章中,我们将展示在centOS系统下如何将php升级到5.6,之前通过yum来安装lamp环境,直接升级的话,提示没有更新包,也就是说默认情况下php5.3.3是最新 1.查看已经安装的php版本 ...

  5. CTE在Oracle和Sqlserver中使用的差异

    CTE是一个很好用的工具,他可以帮助我们清晰代码结构,减少临时表使用,同时oracle和sqlserver都提供支持.但在oracle和sqlserver中使用CTE也存在一定区别. Oracle使用 ...

  6. 调优系列-tomcat调优

    http://www.360doc.com/content/14/1208/13/16070877_431273418.shtml 使用JMeter对Tomcat进行压力测试与Tomcat性能调优 n ...

  7. 数据的动态合并和导出至EXCEL

    最近一段时间都在处理数据的动态合并和导出EXCEL的问题,写个demo记录下,希望和我碰到同样问题的博友可以顺利解决:后面会提供demo下载链接. (VS2012,ASP.NET) 一.主要解决以下问 ...

  8. Android Camera 流程梳理

    毕业已经快两年了,一直没有写博客的习惯,这是第一篇,以后要慢慢养成这个习惯.毕业之后一直在做相机,先简单的梳理下Android Camera的流程. Android Camera 是一个client/ ...

  9. JAVA package与import机制

    JAVA package与import机制 http://files.cnblogs.com/files/misybing/JAVA-package-and-import.pdf import org ...

  10. Android之获取本地图片并压缩方法

    这两天在做项目时,做到上传图片功能一块时,碰到两个问题,一个是如何获取所选图片的路径,一个是如何压缩图片,在查了一些资料和看了别人写的后总算折腾出来了,在此记录一下. 首先既然要选择图片,我们就先要获 ...