- 最后登录
- 2016-10-1
- 注册时间
- 2013-12-28
- 阅读权限
- 90
- 积分
- 5805
- 纳金币
- 2954
- 精华
- 3
|
使用GUI的方式来显示纹理。在《Unity权威指南》中,脚本使用的是JS脚本。现在这篇文章中主要是给出C#的脚本。
下面是代码:
- using UnityEngine;
- public class showTexture : MonoBehaviour {
- private Texture2D oneTexture;
- private Texture2D[] allTexture; //这里可以写成和书上一样的Obeject[],但是要在后面的GUI.DrwaTexture方法中使用强制转换
- void OnGUI()
- {
- //和JS代码不同,这里需要new一个Rect对象
- if (GUI.Button(new Rect(0,20,100,60),"loadOneTexture"))
- {
- if (oneTexture == null)
- {
- oneTexture = Resources.Load("oneTexture/Grass") as Texture2D;
- }
- }
- if (GUI.Button(new Rect(0, 140, 100, 60), "loadAllTexture"))
- {
- if (allTexture == null)
- {
- //这里需要这是泛型为Texture2D
- allTexture = Resources.LoadAll<Texture2D>("allTexture"); //如果上面定义的是Object[]则不需要使用泛型
- }
- }
- if (oneTexture != null)
- {
- GUI.DrawTexture(new Rect(110, 20, 120, 120), oneTexture, ScaleMode.StretchToFill, true, 0);
- }
- if (allTexture != null)
- {
- for (int i = 0; i < allTexture.Length; i++)
- {
- GUI.DrawTexture(new Rect(110 + i * 120, 140, 120, 120), allTexture, ScaleMode.StretchToFill, true, 0);//如果上面定义的是Object[]在这里要进行强制转换成Texture2D
- }
- }
- }
- }
以上代码中,用红笔标出的地方就是C#脚本和JS脚本所不同的地方。
总结:
1、第5行代码,需要声明一个类型为Texture2D的数组allTexture。这里和JS脚本不同的地方是JS脚本中用的是Object数组。
2、第8、15、24、30中都需要使用new关键字实例化一个Rect(矩形)。JS脚本中则不需要new。
3、第19行代码,需要使用LoadAll<T>()方法,在尖括号中指定泛型的类型为Texture2D。
4、第12行代码,需要使用as Texture2D来把加载到得数据执行转换成Texture2D。
5、在上面的代码中,关键的方法主要有三个。这里要先说明一下Resource类,Resource类允许我们去发现和获取一个包含资源中的对象。
第一个方法Resource.Load(string path),用于加载一个存储在Resource文件路径下的资源。参数为目标文件的路径名。
第二个方法Resource.LoadAll<T>(string path),用于加载所有储存在Resource文件路径下的资源或文件。参数同样为目标文件的路径名。
第三个方法GUI.DrawTexture(Rect positon, Texture image, ScaleMode scaleMode, bool alphaBlend, float imageAspect),用于在一个矩形的范围内绘制一个纹理。第一个参数用于设置一个矩形的x坐标,y坐标,宽,高。第二个参数用于设置一个纹理去展示。第三个参数用于怎么去按比例排列(缩放)这个纹理当它的宽高比不能够适应这个绘制的范围时。第四个参数是布尔类型,表示是否应用alpha blending(α混合 我也不知道这样子翻译准不准确,这个是一种让3D物件产生透明感的技术)来绘制这个图片。第五个参数表示图片的宽高比,0是默认值,表示使用图片的宽高比。
6、还有一个方法GUI.Button(Rect positon,string text)。该方法用于产生一个按钮,单击它会立即发生一些事件。第一个参数和GUI.DrawTexture的第一个参数表示的相同,第二个参数表示的是显示在按钮上的文字。这个方法还有另外4中重载,具体的内容需要参考官方的文档。
7、最有一点要注意的就是,我们要显示的纹理需要放到指定的Resource文件夹中。
|
|