unity3d 第九天
2016-07-20 22:00
399 查看
Space() 偏移
Space_test.cs
FlexibleSpace ()对齐方式
FlexibleSpace_test.cs
这里在将js代码 改为c#代码时出现问题,还未解决
CreateandClose_window.cs
错误提示为:
1.Assets/CreateandClose_window.cs(19,59): error CS0103: The name `winArrayList' does not exist in the current context
2.Assets/CreateandClose_window.cs(19,50): error CS1502: The best overloaded method match for `UnityEngine.GUILayout.Window(int, UnityEngine.Rect, UnityEngine.GUI.WindowFunction, string, params UnityEngine.GUILayoutOption[])' has some invalid arguments
3. Assets/CreateandClose_window.cs(19,50): error CS1503: Argument `#2' cannot convert `object' expression to type `UnityEngine.Rect'
貌似是ArrayList 存储的Rect类型 无法正常转化 强制转换方法我又没找到 还未解决
问题一是变量名写错了 声明的winArrylist
问题2,3是类型转化问题 其中 ArrayList的as方法对Rect没用 直接类型强制转化 (Rect)winArryList (之前这样改过 不知道是用成了Rect* 还是之前变量名的问题导致还是保存)
成功的图片
修改的代码
Space_test.cs
using UnityEngine; using System.Collections; public class Space_test : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnGUI(){ //开始一个显示区域 GUILayout.BeginArea (new Rect (0, 0, 200, 60)); GUILayout.BeginHorizontal (); GUILayout.Box ("Test1"); //偏移十像素 GUILayout.Space (10); GUILayout.Box ("Test2"); GUILayout.EndVertical (); GUILayout.Space (20); GUILayout.BeginHorizontal (); GUILayout.Box ("Test3"); //偏移十像素 GUILayout.Space (10); GUILayout.Box ("Test4"); GUILayout.EndVertical (); GUILayout.EndArea (); } }
FlexibleSpace ()对齐方式
FlexibleSpace_test.cs
using UnityEngine; using System.Collections; public class FlexibleSpace_test : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnGUI(){ //开始显示区域 GUILayout.BeginArea (new Rect (0, 0, Screen.width, Screen.height)); GUILayout.BeginHorizontal (); GUILayout.BeginVertical (); GUILayout.Box ("Test1"); //两个Box控件上下对齐 GUILayout.FlexibleSpace (); GUILayout.Box("Test2"); //多个控件对齐 以平分的方式 /*GUILayout.FlexibleSpace (); GUILayout.Box("Test5"); GUILayout.FlexibleSpace (); GUILayout.Box("Test6");*/ GUILayout.EndVertical (); //两个布局上下对齐 GUILayout.FlexibleSpace (); GUILayout.BeginVertical (); GUILayout.Box ("Test3"); GUILayout.FlexibleSpace (); GUILayout.Box("Test4"); GUILayout.EndVertical (); GUILayout.EndHorizontal(); GUILayout.EndArea(); } }窗口创建与关闭
这里在将js代码 改为c#代码时出现问题,还未解决
CreateandClose_window.cs
using UnityEngine; using System.Collections; public class CreateandClose_window : MonoBehaviour { ArrayList winArryList = new ArrayList(); public Texture icon; // Use this for initialization void Start () { winArryList.Add (new Rect (winArryList.Count * 100, 50, 150, 100)); } // Update is called once per frame void Update () { } void OnGUI(){ int cout = winArryList.Count; for (int i =0; i<cout; i++) { <span style="color:#ff0000;">winArryList[i]=GUILayout.Window(i,winArrayList[i],AddWindow,"窗口ID:"+i);</span> } } void AddWindow(int windowID){ GUILayout.BeginHorizontal (); GUILayout.Label (icon, GUILayout.Width (50), GUILayout.Height (50)); GUILayout.Label ("这是一个全新的窗口"); GUILayout.EndHorizontal (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("添加新窗口")) { winArryList.Add (new Rect(winArryList.Count * 100,50,150,100)); } if (GUILayout.Button ("关闭当前窗口")) { winArryList.RemoveAt(windowID); } GUILayout.EndHorizontal (); //设置窗口拖动的区域 GUI.DragWindow(new Rect(0,0,Screen.width,Screen.height)); } }
错误提示为:
1.Assets/CreateandClose_window.cs(19,59): error CS0103: The name `winArrayList' does not exist in the current context
2.Assets/CreateandClose_window.cs(19,50): error CS1502: The best overloaded method match for `UnityEngine.GUILayout.Window(int, UnityEngine.Rect, UnityEngine.GUI.WindowFunction, string, params UnityEngine.GUILayoutOption[])' has some invalid arguments
3. Assets/CreateandClose_window.cs(19,50): error CS1503: Argument `#2' cannot convert `object' expression to type `UnityEngine.Rect'
貌似是ArrayList 存储的Rect类型 无法正常转化 强制转换方法我又没找到 还未解决
问题一是变量名写错了 声明的winArrylist
问题2,3是类型转化问题 其中 ArrayList的as方法对Rect没用 直接类型强制转化 (Rect)winArryList (之前这样改过 不知道是用成了Rect* 还是之前变量名的问题导致还是保存)
成功的图片
修改的代码
void OnGUI(){ int cout = winArryList.Count; for (int i =0; i<cout; i++) { winArryList[i]=GUILayout.Window(i,(Rect)winArryList[i],AddWindow,"窗口ID:"+i); } }
相关文章推荐
- 一步一步学习Unity3d学习笔记系1.1
- unity 类的序列化
- Unity 中gameObject.SetActive()方法的使用
- Photon Server笔记1:启动MMO Demo 2016/07/20
- unity 协成的执行顺序
- 【Unity Shader】第二节 为上一节课的shader增加属性
- 【Unity3d】碰撞检测
- Unity camera.rect 用法
- Git学习笔记1
- Unity3D占用内存太大的解决方法
- Unity 3D - 生命周期
- unity3d的local和global
- Unity 3D - 优化内存
- 使用Unity开发HoloLens应用
- (来自知乎)Unity反射机制的理解
- Unity 3D - MipMap
- Unity和Android相互通信
- Unity3d gameObject
- Unity3d Time
- Unity3d Vector3