使用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比较相关推荐

  1. GUI,UGUI,NGUI三种编辑UI界面的插件

    出现顺序:GUI,UGUI,NGUI的出现顺序:GUI-->NGUI-->UGUI. GUI:GUI是unity内置的,拥有大量的UI方面的类和方法.GUI用起来很繁琐,因为没有内置的按钮 ...

  2. linux gui编程语言,使用 Red 语言编写 GUI 应用程序

    一句话概括 - 使用 Red 语言编写原生跨平台桌面 GUI. 尝试在 Windows 上使用 PyInstaller 将"可执行"的 ducktape 封装在 Python 脚本 ...

  3. 理解MATLAB GUI运行机制01--gui_mainfcn函数、GUI数据管理机制

    声明:本文内容参考<MATLAB GUI设计学习手记> 从这篇博文开始,不打算废话了,直接上干货! gui_mainfcn函数 上篇博文对gui_mainfcn函数一带而过,本篇博文从这个 ...

  4. 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. ...

  5. 【GUI转exe】Matlab将GUI转化为exe文件

    将自己编写的GUI文件转化为exe文件的方式有很多种,具体谈一下利用deploytool进行转化的方法. 首先在命令窗口利用mbuild -setup配置Matlab的一个编译器什么的,按照提示,选择 ...

  6. java gui 读取文件夹_java Swing GUI 入门-文件读写器

    java Swing GUI 入门-文件读写器 觉得有用的话,欢迎一起讨论相互学习~ 首先创建一个独立的窗口 public CoupPad(){} public static void main(St ...

  7. mysql gui tools 问题_Navicat与MySQL GUI Tools管理工具的优缺点对比

    前言 MySQL GUI工具很多,本文就常用的Navicat for MySQL与MySQL GUI Tools的特色功能做一个详细介绍与比较. (一)MySQL GUI Tools MySQL官方提 ...

  8. git gui管理服务器配置文件,从 Git Gui 管理的Repository(库) 提交更改到 Bonobo服务器管理的Repository(库)...

    要提交更改到Bonobo服务器管理的某个Repository(库),必须先得在Bonobo服务器上有此Repository(库)--简直就是废话.那么怎么才能这个Repository(库)变出来呢?其 ...

  9. matlab gui表格行标1234没有,MATLAB GUI:滑塊作爲滾動條;子面板不夾

    長時間潛伏者 - 我真的很感謝社區的知識.我已經在這裏和其他地方看到過這個問題,但我還沒有找到合適的解決方案.如果我錯過了之前列出的答案,請張貼鏈接並接受我的道歉.MATLAB GUI:滑塊作爲滾動條 ...

  10. python 图形化开发用什么模块_用python进行GUI开发的选择/python的GUI模块(图形界面开发库)...

    Python最大的特点就在于她的快速开发功能.作为一种胶水型语言,python几乎可以渗透在我们编程过程中的各个领域.这里我简单介绍一下用python进行gui开发的一些选择. 1.Tkinter T ...

最新文章

  1. 使用VA助手如何快速添加注释(按doxygen注释规范)
  2. docker部署Redmine项目管理平台
  3. Extjs Window用法详解 2 打印具体应用
  4. 在Amazon Elastic Beanstalk上部署Spring Boot应用程序
  5. Microsoft visual studio关闭安全检查
  6. iec611313标准下载_欧姆龙PLC编程软件中功能块的使用方法
  7. 绿联串口线linux驱动下载,绿联USB转DB9串口线驱动 V1.6.1 Mac版
  8. SSL基础:21:使用ca子命令为其他证书签名
  9. mysql文件后缀名是什么_数据库文件的扩展名是什么?
  10. (原創) 如何讓ThinkPad的TrackPoint的中鍵支援MSN、FireFox、IE7和Office 2007的捲動? (NB) (ThinkPad)...
  11. saltstackmysql return报错
  12. 【Pytorch with fastai】第 3 章 :数据伦理
  13. iPaste:剪贴板界的一股清流
  14. 盘点40余款好用的项目管理软件
  15. Android 快捷方式 shortcuts 使用
  16. GEA 1.6 运行时引擎架构
  17. 清晰讲解 | PMP考生关心的10大问题
  18. 红帽linux6主板,Linux_I810 Graphics LINUX Driver的安装,我的机子的主板是承启6WIV主板 - phpStudy...
  19. Charles的Mock测试map local方法将response保存本地并修改
  20. ipmitool获取服务器信息

热门文章

  1. Palantir分析:「商业模式画布」、「SWOT」、「垄断特征」、以及「7个商业模式」
  2. python 同步记事本_如何使用Python同步文件夹
  3. java进阶知识思维导图
  4. ECCV2020:论文解读《Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation》
  5. 打开我的收藏夹 -- Python时间序列分析篇
  6. oracle用户 expire,Oracle用户expired
  7. android ShareSDK分享,QQ,微信,新浪等分享
  8. 阿里云服务器安装宝塔流程
  9. 两张图片切换比例虚拟进度条
  10. 昨天去某大厂面试,居然让我做四则运算,还好我够机灵。