Unity NGUI 网络斗地主 -界面制作
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 网络斗地主 -界面制作的更多相关文章
- Unity NGUI 网络斗地主 -制作图集 Atlas
Unity NGUI 网络斗地主 -制作图集 Atlas by @杨海龙 开发环境 Win7+Unity4.2.1f4+NGUI 3.0.4版本 这一节告诉大家如何制作(图集)Atlas! 1.首 ...
- Unity NGUI 网络斗地主 -发牌 脚本交互
Unity NGUI 网络斗地主 -发牌 脚本交互 @By 灰太龙 Unity4.2.1f4 NGUI 3.0.4 本篇说的问题是脚本与控件的交互! 现在对界面进行了改进,先看副图! 1.制作发牌效果 ...
- Unity NGUI 3.0.4版本 制作网络版斗地主
Unity NGUI 3.0.4版本 @by 灰太龙 开发环境 Win7旗舰版 Unity 4.2.1f4 本文就写个开门篇,告诉大家怎么用NGUI,第一步导入NGUI 3.0.4版本! 1.启动U ...
- Unity网络斗地主 服务端
Unity网络斗地主 服务端 @by梦想之家2工作室 阿龙 已经做好了服务器框架,并且能实现服务器给客户端分牌的问题!
- Unity 网络斗地主 判断牌的类型
Unity 网络斗地主 牌的类型 web版本演示地址: http://www.dreamhome666.com/Desktop.html 在上个版本中,下面的角色在牌的后面,可以将角色做为一个P ...
- Unity 网络斗地主 牌的一些算法
Unity 网络斗地主 牌的一些算法 在这儿说一下,我的项目是用svn的方式,上传在https://v2.svnspot.com/18666451713.doudizhu这个svn上,大家可以下载T ...
- BMFont中文字体图集制作的方法~(for unity ngui)
BMFont中文字体图集制作的方法~(for unity ngui) 好吧~似乎这个问题困扰了很多人,游戏开始中文化是个不错的事儿啊,这里我就做下说明,如何制作中文字体图集~ 这里的字库图集的制作更多 ...
- 自制Unity小游戏TankHero-2D(1)制作主角坦克
自制Unity小游戏TankHero-2D(1)制作主角坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...
- Unity iOS混合开发界面切换思路
Unity iOS混合开发界面切换思路 最近有很多博友QQ 私信 或则 留言联系我,请教iOS和Unity界面之前相互切换的问题,源代码就不私下发你们了,界面跳转功能的代码我直接贴到下面好了,顺带说i ...
随机推荐
- Android 官方命令深入分析
原文:www.libgdx.cn Android SDK包括了多种工具来帮助你创建基于Android平台的移动应用.这些工具一般分成两类:SDK 工具和 platform 工具. SDK 工具是独立的 ...
- innodb结构解析工具---innodb_ruby
1.下载ruby并安装ruby: ftp://ftp.ruby-lang.org/pub/ruby/ ftp://ftp.ruby-lang.org/pub/ruby/ruby-2.3-stable. ...
- iOS--NSAttributedString使用介绍
iOS–NSAttributedString使用介绍 原文见: http://www.itnose.net/detail/6177538.html http://***/html/topnews201 ...
- 使用JExcel导出excel文件
package org.aaa.portal.tools; import java.io.File; import java.io.IOException; import java.util.List ...
- Java基础知识强化之集合框架笔记32:集合之可变参数的概述和使用
1. 可变参数的概述和使用: (1)可变参数:定义方法的时候不知道该定义多少个参数(2)格式: 修饰符 返回值类型 方法名(数据类型… 变量名){ } 注意: 这里的变量其实是一个数 ...
- AndroidStudio工程文件导入Jar包和So第三方库
AndroidStudio 导入Jar包和第三方So库 在android开发中,需要导入许多第三方的jar包和so库来支持,包括像许多第三方的支持平台--友盟,环信.融云.极光推送.微博.腾讯等第三方 ...
- CSS3伪类nth-child结合transiton动画实现文字若影若现
css3伪类nth-child结合transiton动画实现文字若影若现收先创建一个div盒子,然后包裹在div中的有10个span标签每个span标签填上内容一次为A,B,C,D,E,F,G,H,I ...
- vs2013下的WCFRest 模板开发WCF
在vs2013下使用wcfRestservice40 是安装不成功的,尝试多遍,都是这样.查看以前vs2012做的wcfrest,经过调教,终于在vs2013下也可以了! 1.新建wcf服务应用程序 ...
- TCP与UDP区别
原文链接:http://blog.sina.com.cn/s/blog_493309600100clrw.html TCP与UDP区别 TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当 ...
- [转帖]MATLAB曲线绘制及颜色类型
信号源产生的方法 来源:http://www.2cto.com/kf/201401/270494.html matlab的checkerboard说明,GOOD! 来源:http://www.chi ...