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脚本
1 using UnityEngine;2 using System.Collections;3 using System.Collections.Generic;4 // <summary>5 /// This is used to decide how the camera rendering result to draw to screen.6 /// </summary>7 public enum Camera2DStretchMode8 {9 None,10 StretchFit,11 AspectStretchFit,12 }13 14 /// <summary>15 /// A Camera2D is a camera through which the player views the world.16 /// </summary>17 [ExecuteInEditMode]18 [RequireComponent(typeof(Camera))]19 public class MyCamera : MonoBehaviour20 {21 public static Rect cameraRect;22 /// <summary>23 /// The width of the target screen window in pixels.24 /// </summary>25 public float screenWidth = 800;26 27 /// <summary>28 /// The height of the target screen window in pixels.29 /// </summary>30 public float screenHeight = 600;31 32 /// <summary>33 /// Camera's half-size in orthographic mode34 /// </summary>35 public float orthographicSize36 {37 get38 {39 return _orthographicSize;40 }41 42 set43 {44 _orthographicSize = value;45 46 float aspect = (float)screenWidth / (float)screenHeight;47 48 screenHeight = 2f * _orthographicSize;49 screenWidth = screenHeight * aspect;50 }51 }52 53 [SerializeField]54 private float _orthographicSize = 300;55 56 /// <summary>57 /// This is used to decide how the camera rendering result to draw to screen.58 /// </summary>59 public Camera2DStretchMode stretchMode = Camera2DStretchMode.StretchFit;60 61 62 63 void Reset()64 {65 66 }67 68 69 70 void OnDestroy()71 {72 73 }74 75 76 private bool isOpenGL = false;77 void Awake()78 {79 }80 81 82 void resetCamera()83 {84 orthographicSize = screenHeight * 0.5f;85 86 camera.orthographic = true;87 camera.orthographicSize = screenHeight * 0.5f;88 camera.aspect = (float)screenWidth / (float)screenHeight;89 90 91 int mask = 1;92 int i = 0;93 94 float hw = screenWidth * 0.5f;95 float hh = screenHeight * 0.5f;96 97 98 if (isOpenGL)99 camera.projectionMatrix = Matrix4x4.Ortho(-hw, hw, -hh, hh, 0.0f, 1024f); 100 else 101 { 102 camera.projectionMatrix = Matrix4x4.Ortho(-hw + 0.5f, hw + 0.5f, -hh - 0.5f, hh - 0.5f, -0.01f, 1024f); 103 } 104 105 106 107 if (Screen.width <= 0f || Screen.height <= 0f) 108 return; 109 110 111 if (stretchMode == Camera2DStretchMode.None) 112 { 113 camera.pixelRect = new Rect((Screen.width - screenWidth) * 0.5f, (Screen.height - screenHeight) * 0.5f, screenWidth, screenHeight); 114 } 115 116 if (stretchMode == Camera2DStretchMode.StretchFit) 117 { 118 camera.pixelRect = new Rect(0f, 0f, Screen.width, Screen.height); 119 } 120 121 if (stretchMode == Camera2DStretchMode.AspectStretchFit) 122 { 123 float cameraAspect = (float)screenWidth / (float)screenHeight; 124 float screenAspect = (float)Screen.width / (float)Screen.height; 125 126 if (screenAspect >= cameraAspect) 127 { 128 float h = Screen.height; 129 float w = Screen.height * cameraAspect; 130 camera.pixelRect = new Rect((Screen.width - w) * 0.5f, 0f, w, h); 131 } 132 else 133 { 134 float w = Screen.width; 135 float h = w * ((float)screenHeight / (float)screenWidth); 136 camera.pixelRect = new Rect(0, (Screen.height - h) * 0.5f, w, h); 137 } 138 139 } 140 141 cameraRect = camera.pixelRect; 142 } 143 144 145 void OnPreRender() 146 { 147 resetCamera(); 148 149 } 150 151 152 153 void OnEnable() 154 { 155 isOpenGL = SystemInfo.graphicsDeviceName.ToUpper().IndexOf("OPENGL") >= 0; 156 resetCamera(); 157 } 158 }
View Code
现在可以添加控件了,点击NGUI->Open->Widget Tool来添加控件了,添加控件比较简单!
下一篇 NGUI的图集 Altas
转载于:https://www.cnblogs.com/alongu3d/p/3432559.html
Unity NGUI 网络斗地主 -界面制作相关推荐
- Unity微信聊天框界面制作
[原理] 一个聊天界面主要由三个部分组成:内容区.可见区.滑动条 可见区在内容区上边,内容区会随着聊天内容变得非常长,但只有位于可见区的部分才能被看见,其他区域的看不见.通过滑动条上下移动内容区,看见 ...
- Unity NGUI 3.0.4版本 制作网络版斗地主
Unity NGUI 3.0.4版本 @by 灰太龙 开发环境 Win7旗舰版 Unity 4.2.1f4 本文就写个开门篇,告诉大家怎么用NGUI,第一步导入NGUI 3.0.4版本! 1.启动U ...
- Unity MVC设计模式与UI背包界面制作
Unity MVC设计模式与UI背包界面制作 MVC设计模式非常适合UI的架构,UI界面相当于View,UI转换控制相当于Controller,UI上面的数据变换相当于Model.MVC设计模式在软件 ...
- Unity网络斗地主 服务端
Unity网络斗地主 服务端 @by梦想之家2工作室 阿龙 已经做好了服务器框架,并且能实现服务器给客户端分牌的问题! 转载于:https://www.cnblogs.com/alongu3d/p/ ...
- Unity 网络斗地主 牌的一些算法
Unity 网络斗地主 牌的一些算法 在这儿说一下,我的项目是用svn的方式,上传在 https://v2.svnspot.com/18666451713.doudizhu这个svn上,大家可以下载 ...
- 【Unity】励志成为最强UI仔—BeaverJoe项目之UI界面制作【上】代码优化-动态加载UI对象
跟BeaverJoe老师学习UI界面制作中,在原先的项目中,角色的solt是静态的五个角色.所以我想把他改成一个动态通过PlayerGM来控制的一个动态加载UI 效果展示 /// <summar ...
- 网络上游戏制作相关学习站点的网址
棋牌类游戏客户端结构分析 编辑 2008-04-18 09:57:00 标签:游戏大厅 结构 it 在这里所讨论的棋牌类游戏并不是所有的平台类型,而是通常的表现形式即游戏广场-游戏大厅-游戏房间的类型 ...
- Unity NGUI 插件 简介
文章目录 Unity NGUI 一. NGUI基础 1.1 导入NGUI插件 1.2 基本UI资源 1.3 制作UI图集 1.4 制作UI字体 1.5 UIRoot.UIPanel 和 UICamer ...
- 自制Unity小游戏TankHero-2D(1)制作主角坦克
自制Unity小游戏TankHero-2D(1)制作主角坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...
最新文章
- 使用Docker的macvlan为容器提供桥接网络及跨主机通讯
- 前台Vue、后台Django、设置axios解决csrf_token问题
- [MySQL] 事务的ACID特性
- oracle数据库解锁表
- 实践解析可视化开发平台FlinkSever优势
- 使用Pytorch DataLoader快捷封装训练数据、测试数据的X与Y
- python怎么弄成白色背景_使用PIL python将白色背景转换为透明背景
- Linux中使用tar打包解包查看的使用方法
- 搞全闪存阵列的各执一词 宏杉说别吵了,就用我哒
- java标书_java软件项目投标技术标书模板.doc
- 群晖3617可以有几个网卡_一步到位,购入群晖920+和它的小伙伴们
- java获取时间戳单位秒,如何测试给定的时间戳是以秒或毫秒为单位?
- 一个抄底指标(52周新低的股票占比)
- ubuntu安装deb文件
- 为什么1//0.1等于9.0,而1//-0.1=-10?
- javascript 模拟退格键_js按钮模拟键盘退格键定位删除问题
- mac文件夹怎么重命名?苹果电脑文件夹重命名快捷键
- hyper graph 超图
- python | requests库基本应用
- 微信小程序开发指南,接口文档,工具下载使用
热门文章
- 控制手机 滑动 蓝牙hid_米家LED灯泡蓝牙Mesh版,助你打造温馨的智能家庭
- 基于增量更新的协同过滤
- xlrd读取所有sheet名_如何在Python对Excel进行读取
- html重复div绘制,[DIV+CSS]绘制2重交叉表_html/css_WEB-ITnose
- python对称加密_【Python】 基于秘钥的对称加密
- 汇编学习--7.13--转移指令
- yolov5继续训练_震惊! 它来了!YOLOv5它来了!
- spark 读写SequenceFile
- spark数据倾斜解决之提高并行度
- kafka offset入门理解