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 网络斗地主 -界面制作相关推荐

  1. Unity微信聊天框界面制作

    [原理] 一个聊天界面主要由三个部分组成:内容区.可见区.滑动条 可见区在内容区上边,内容区会随着聊天内容变得非常长,但只有位于可见区的部分才能被看见,其他区域的看不见.通过滑动条上下移动内容区,看见 ...

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

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

  3. Unity MVC设计模式与UI背包界面制作

    Unity MVC设计模式与UI背包界面制作 MVC设计模式非常适合UI的架构,UI界面相当于View,UI转换控制相当于Controller,UI上面的数据变换相当于Model.MVC设计模式在软件 ...

  4. Unity网络斗地主 服务端

    Unity网络斗地主  服务端 @by梦想之家2工作室 阿龙 已经做好了服务器框架,并且能实现服务器给客户端分牌的问题! 转载于:https://www.cnblogs.com/alongu3d/p/ ...

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

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

  6. 【Unity】励志成为最强UI仔—BeaverJoe项目之UI界面制作【上】代码优化-动态加载UI对象

    跟BeaverJoe老师学习UI界面制作中,在原先的项目中,角色的solt是静态的五个角色.所以我想把他改成一个动态通过PlayerGM来控制的一个动态加载UI 效果展示 /// <summar ...

  7. 网络上游戏制作相关学习站点的网址

    棋牌类游戏客户端结构分析 编辑 2008-04-18 09:57:00 标签:游戏大厅 结构 it 在这里所讨论的棋牌类游戏并不是所有的平台类型,而是通常的表现形式即游戏广场-游戏大厅-游戏房间的类型 ...

  8. Unity NGUI 插件 简介

    文章目录 Unity NGUI 一. NGUI基础 1.1 导入NGUI插件 1.2 基本UI资源 1.3 制作UI图集 1.4 制作UI字体 1.5 UIRoot.UIPanel 和 UICamer ...

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

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

最新文章

  1. 使用Docker的macvlan为容器提供桥接网络及跨主机通讯
  2. 前台Vue、后台Django、设置axios解决csrf_token问题
  3. [MySQL] 事务的ACID特性
  4. oracle数据库解锁表
  5. 实践解析可视化开发平台FlinkSever优势
  6. 使用Pytorch DataLoader快捷封装训练数据、测试数据的X与Y
  7. python怎么弄成白色背景_使用PIL python将白色背景转换为透明背景
  8. Linux中使用tar打包解包查看的使用方法
  9. 搞全闪存阵列的各执一词 宏杉说别吵了,就用我哒
  10. java标书_java软件项目投标技术标书模板.doc
  11. 群晖3617可以有几个网卡_一步到位,购入群晖920+和它的小伙伴们
  12. java获取时间戳单位秒,如何测试给定的时间戳是以秒或毫秒为单位?
  13. 一个抄底指标(52周新低的股票占比)
  14. ubuntu安装deb文件
  15. 为什么1//0.1等于9.0,而1//-0.1=-10?
  16. javascript 模拟退格键_js按钮模拟键盘退格键定位删除问题
  17. mac文件夹怎么重命名?苹果电脑文件夹重命名快捷键
  18. hyper graph 超图
  19. python | requests库基本应用
  20. 微信小程序开发指南,接口文档,工具下载使用

热门文章

  1. 控制手机 滑动 蓝牙hid_米家LED灯泡蓝牙Mesh版,助你打造温馨的智能家庭
  2. 基于增量更新的协同过滤
  3. xlrd读取所有sheet名_如何在Python对Excel进行读取
  4. html重复div绘制,[DIV+CSS]绘制2重交叉表_html/css_WEB-ITnose
  5. python对称加密_【Python】 基于秘钥的对称加密
  6. 汇编学习--7.13--转移指令
  7. yolov5继续训练_震惊! 它来了!YOLOv5它来了!
  8. spark 读写SequenceFile
  9. spark数据倾斜解决之提高并行度
  10. kafka offset入门理解