GUI使用2——总结NGUI、tookit2D、GUI比较
使用GUI实现窗体的主要代码
using UnityEngine;
using System.Collections;public class MyGUI : MonoBehaviour {//public Texture aaa;//public string bbb;//public int ccc;//public string ddd;private bool showWindow;//控制主窗体是否打开状态private Rect windowRectB;//主窗体private Rect btnClose;//关闭按钮public GUISkin customSkin;//自定义皮肤public Texture tHero;public Texture status1;public Texture status2;public Texture killBox;private int intToobar = 0;//被选择按钮的索引号。private int selectionGrid = 0;//被选择表格按钮的索引号。public string[] toobarString = { "STATUS", "INVENTORY", "EQUIPMENT" };public Item[] items;private Vector2 scrollPosition = Vector2.zero;//定义滚动条的初始位置//public Item[]items; //定义item类型数组//private Item currentItem;// Use this for initializationvoid Start () {showWindow = false;windowRectB = new Rect(10, 10, 680, 480);btnClose = new Rect(620,10,26,22);//items = new Item[2] { new Item(aaa, bbb, ccc, ddd), new Item(aaa, bbb, ccc, ddd) };}void Update () {if (Input.GetKey(KeyCode.M)){showWindow = true;}}void OnGUI(){GUI.skin = customSkin;if (showWindow){windowRectB = GUI.Window(0, windowRectB, MyDoWindow, "", GUI.skin.GetStyle("windowRectB"));windowRectB.x = Mathf.Clamp(windowRectB.x, 0, Screen.width - windowRectB.width);//clamp限制函数,限制窗体的宽在0和creen.width - windowRectB.width之间windowRectB.y = Mathf.Clamp(windowRectB.y, 0, Screen.height - windowRectB.height);}}void MyDoWindow(int windowsID){switch (intToobar){case 0:toolBar1();break;case 1:toolBar2();break;case 2:break;}intToobar = GUI.Toolbar(new Rect(35, 15, 490, 40), intToobar, toobarString, GUI.skin.GetStyle("myToolbar"));//绘制toolbarif (GUI.Button(btnClose,"", GUI.skin.GetStyle("btnClose")))//关闭窗体代码{showWindow = false;}GUI.DragWindow();//GUI.DragWindow()函数必须写在按钮代码的后头,否则会出现惊悚的事情GUI.DrawTexture(new Rect(19,35,225,441),tHero);//显示旁边的图片}void toolBar1(){GUI.Box(new Rect(237, 67, 360, 147), "");//绘制状态盒子GUI.Box(new Rect(237, 230, 360, 207), "");//绘制收获盒子GUI.DrawTexture(new Rect(252, 77, 331, 125), status1);GUI.DrawTexture(new Rect(252, 244, 331, 125), status2);GUI.DrawTexture(new Rect(460, 284, 117, 125), killBox);GUI.Label(new Rect(313, 75, 120, 25), "123");GUI.Label(new Rect(313, 100, 120, 25), "123");GUI.Label(new Rect(313, 124, 120, 25), "123");GUI.Label(new Rect(313, 150, 120, 25), "123");GUI.Label(new Rect(313, 177, 120, 25), "123");}void toolBar2(){int intItems = 8;GUI.Box(new Rect(237,67,360,247), "");GUI.Box(new Rect(237,330,360,107), "");//滚动条部分scrollPosition=GUI.BeginScrollView(new Rect(257,87,320,200),scrollPosition,new Rect(0,0,280,40*intItems));//GUIContent[] itemContent = new GUIContent[intItems];//for (int i = 0; i < intItems; i++)//{// selectionGrid = GUI.SelectionGrid(new Rect(0, 0, 280, 40 * intItems), selectionGrid, itemContent, 1);//}GUI.EndScrollView();}
}
问题和总结:
1 在脚本中new一个自定义变量,自定义变量中的共有变量不能显示在属性面板上
(如果想让自定义的类的共有字段出现在属性面板上需要继承 MonoBehaviour )
2 不明白unity中的类和自定义类的区别
3 tookit2D使用起来比较方便,只是在添加方法上有些麻烦(见tookit2D使用3——给精灵添加GUI按钮效果),很适合制作2d游戏
4 给GUI添加皮肤组件可以实现和NGUI一样的效果缺点:使用GUI各个模块的距离必须自己控制,给按钮添加事件要靠使用变量来控制,和C#中的事件不一样,(NGUI相当于在游戏视窗中添加了游戏对象,而GUI只是在OnGUI函数中绘制,两者可以实现的相同的效果,实现的原理不同)
5 这几天接触自定义类和学习网络游戏相当受挫,还不清楚C#脚本和Unity脚本之间的关系,还不清楚C#的委托,接口,套接字,多线程在unity有没有变化,快要找工作了,觉得患得患失的,既不想花太多时间去解决一个问题,又觉得有好多没有学习。
转载于:https://www.cnblogs.com/lv-sally/p/4563866.html
GUI使用2——总结NGUI、tookit2D、GUI比较相关推荐
- GUI,UGUI,NGUI三种编辑UI界面的插件
出现顺序:GUI,UGUI,NGUI的出现顺序:GUI-->NGUI-->UGUI. GUI:GUI是unity内置的,拥有大量的UI方面的类和方法.GUI用起来很繁琐,因为没有内置的按钮 ...
- linux gui编程语言,使用 Red 语言编写 GUI 应用程序
一句话概括 - 使用 Red 语言编写原生跨平台桌面 GUI. 尝试在 Windows 上使用 PyInstaller 将"可执行"的 ducktape 封装在 Python 脚本 ...
- 理解MATLAB GUI运行机制01--gui_mainfcn函数、GUI数据管理机制
声明:本文内容参考<MATLAB GUI设计学习手记> 从这篇博文开始,不打算废话了,直接上干货! gui_mainfcn函数 上篇博文对gui_mainfcn函数一带而过,本篇博文从这个 ...
- GUI编程介绍,为什么学GUI编程,监听到底是怎么一回事?
文章目录 1.关于GUI编程 1.1 简介 1.2 GUI 介绍 1.3 GUI 的好处 1.4 GUI 的基本组件内容 2. GUI 的核心 2.1 java.awt.*; 2.2 Swing 3. ...
- 【GUI转exe】Matlab将GUI转化为exe文件
将自己编写的GUI文件转化为exe文件的方式有很多种,具体谈一下利用deploytool进行转化的方法. 首先在命令窗口利用mbuild -setup配置Matlab的一个编译器什么的,按照提示,选择 ...
- java gui 读取文件夹_java Swing GUI 入门-文件读写器
java Swing GUI 入门-文件读写器 觉得有用的话,欢迎一起讨论相互学习~ 首先创建一个独立的窗口 public CoupPad(){} public static void main(St ...
- mysql gui tools 问题_Navicat与MySQL GUI Tools管理工具的优缺点对比
前言 MySQL GUI工具很多,本文就常用的Navicat for MySQL与MySQL GUI Tools的特色功能做一个详细介绍与比较. (一)MySQL GUI Tools MySQL官方提 ...
- git gui管理服务器配置文件,从 Git Gui 管理的Repository(库) 提交更改到 Bonobo服务器管理的Repository(库)...
要提交更改到Bonobo服务器管理的某个Repository(库),必须先得在Bonobo服务器上有此Repository(库)--简直就是废话.那么怎么才能这个Repository(库)变出来呢?其 ...
- matlab gui表格行标1234没有,MATLAB GUI:滑塊作爲滾動條;子面板不夾
長時間潛伏者 - 我真的很感謝社區的知識.我已經在這裏和其他地方看到過這個問題,但我還沒有找到合適的解決方案.如果我錯過了之前列出的答案,請張貼鏈接並接受我的道歉.MATLAB GUI:滑塊作爲滾動條 ...
- python 图形化开发用什么模块_用python进行GUI开发的选择/python的GUI模块(图形界面开发库)...
Python最大的特点就在于她的快速开发功能.作为一种胶水型语言,python几乎可以渗透在我们编程过程中的各个领域.这里我简单介绍一下用python进行gui开发的一些选择. 1.Tkinter T ...
最新文章
- 使用VA助手如何快速添加注释(按doxygen注释规范)
- docker部署Redmine项目管理平台
- Extjs Window用法详解 2 打印具体应用
- 在Amazon Elastic Beanstalk上部署Spring Boot应用程序
- Microsoft visual studio关闭安全检查
- iec611313标准下载_欧姆龙PLC编程软件中功能块的使用方法
- 绿联串口线linux驱动下载,绿联USB转DB9串口线驱动 V1.6.1 Mac版
- SSL基础:21:使用ca子命令为其他证书签名
- mysql文件后缀名是什么_数据库文件的扩展名是什么?
- (原創) 如何讓ThinkPad的TrackPoint的中鍵支援MSN、FireFox、IE7和Office 2007的捲動? (NB) (ThinkPad)...
- saltstackmysql return报错
- 【Pytorch with fastai】第 3 章 :数据伦理
- iPaste:剪贴板界的一股清流
- 盘点40余款好用的项目管理软件
- Android 快捷方式 shortcuts 使用
- GEA 1.6 运行时引擎架构
- 清晰讲解 | PMP考生关心的10大问题
- 红帽linux6主板,Linux_I810 Graphics LINUX Driver的安装,我的机子的主板是承启6WIV主板 - phpStudy...
- Charles的Mock测试map local方法将response保存本地并修改
- ipmitool获取服务器信息
热门文章
- Palantir分析:「商业模式画布」、「SWOT」、「垄断特征」、以及「7个商业模式」
- python 同步记事本_如何使用Python同步文件夹
- java进阶知识思维导图
- ECCV2020:论文解读《Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation》
- 打开我的收藏夹 -- Python时间序列分析篇
- oracle用户 expire,Oracle用户expired
- android ShareSDK分享,QQ,微信,新浪等分享
- 阿里云服务器安装宝塔流程
- 两张图片切换比例虚拟进度条
- 昨天去某大厂面试,居然让我做四则运算,还好我够机灵。