Unity3D的几个琐碎知识点备忘

Unity3d的几个比较琐碎的知识点备忘,

  1. GameObject的显示、隐藏和查找
  2. C#的int,string和float的转换
  3. C#中数组、ArrayList和List三者的区别
  4. C#中Dictionary的说明

一、GameObject的显示、隐藏和查找


以我工程的结构为例

屏幕快照 2016-06-23 16.45.38.png

在GameObject中,没有像cocos2d中的setVisible方法,所以只能选择激活不激活的方法来隐藏和显示该对象。所以想要隐藏pros这个节点可以采用这个函数

GameObject.Find("pros").SetActive(false);

查找GameObject的方法很多,

屏幕快照 2016-06-23 22.26.20.png

但是如果这个对象的执行setActive(false)之后,直接通过GameObject.Find是找不到该对象的,执行之后会返回为空,所以可以通过活跃的父节点查找不活跃的节点。

GameObject.Find("UI Root").transform.Find("pros").gameObject

这个执行可以得到对象,当然如果不是动态的话,也可以把该节点创建成public的对象,保存在一个变量中。

比如这个代码控制

	public GameObject obj;

	// Update is called once per frame
	void Update () {
		if(Input.GetKeyDown(KeyCode.A)){
			if(obj.activeSelf){
				obj.SetActive(false);
			}
			else
				obj.SetActive(true);
		}
	}

然后用public手动管理这个对象也可以

屏幕快照 2016-06-23 22.34.36.png


二、C#的int,string和float的转换


首先先说这个Convert类,

Convert 将一个基本数据类型转化为另一基本数据类型。

支持的转化类型:受支持的基类型是 Boolean、Char、SByte、Byte、Int16、Int32、Int64、UInt16、UInt32、UInt64、Single、Double、Decimal、DateTime 和 String。

这个类具体用法可以百度。


1、int转string


int i =10;
string k =System.Convert.ToString(i);
string s= i.ToString();
string m =""+i;


2、string转int


string str = "123";
int i = int.Parse(str);
int k16 = System.Convert.ToInt16(str);
int k32 = System.Convert.ToInt32(str); 


3、float转int,转型取舍不同,注释中有对比


float f = 0.6f;                                     //0.4,  0.5,  0.6
int i = Mathf.CeilToInt(f);                    //1,  1,  1,
int k = Mathf.FloorToInt(f);                 //0,  0,  0
int k16 = System.Convert.ToInt16(f);  //0,  0,  1
int k32 = System.Convert.ToInt32(f);  //0,  0,  1


三、C#中数组、ArrayList和List三者的区别


Array和ArrayList存储的对象是否固定,ArrayList和List<T>考虑类型是否安全,

因为array的话,就是直接指定了类型,只能存放该类型,而ArrayList则可以存放任意object类型。

这个文章说的很好:http://blog.csdn.net/zhang_xinxiu/article/details/8657431

就是array是这样的:

string[] s=new string[2];  
//赋值
s[0]="a";
s[1]="b";
//修改
s[1]="a1";  

这样的话就只能存放string,在声明数组的时候必须指定数组的长度,数组的长度过长,会造成内存浪费,过段会造成数据溢出的错误。如果在声明数组时我们不清楚数组的长度,就会变得很麻烦。针对数组的这些缺点,C#中最先提供了ArrayList对象来克服这些缺点

ArrayList是这样的

ArrayList list1 = new ArrayList();  
//新增数据  
list1.Add("cde");  
list1.Add(5678);  
//修改数据  
list[2] = 34;  
//移除数据  
list.RemoveAt(0);  
//插入数据  
list.Insert(0, "qwe"); 

这样就ArrayList可以存放任意类型,我们不仅插入了字符串cde,而且插入了数字5678。这样在ArrayList中插入不同类型的数据是允许的。因为ArrayList会把所有插入其中的数据当作为object类型来处理,在我们使用ArrayList处理数据时,很可能会报类型不匹配的错误,也就是ArrayList不是类型安全的。

List就是这样的

List<string> list = new List<string>();  
//新增数据  
list.Add(“abc”);  
//修改数据  
list[0] = “def”;  
//移除数据  
list.RemoveAt(0);  

这样就指定了类型,就不怕类型错误了


四、C#中Dictionary的说明


Dictionary的用法网上很多,这里需要提的就是使用的时候要导入头文件

Using System.Collection.Generic;

不然会调不出来。

Last modification:January 1st, 1970 at 08:00 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

Leave a Comment