Unity3D开发中常用的单句小功能代码

------------------------------------------------
关于例句的声明
------------------------------------------------
例句里的obj大都是实例对象,即绑定了实际GameObject的 public GameObject obj;
这个obj是脚本中的一个全局对象。
------------------------------------------------
一些C#基础操作
------------------------------------------------
换行符
例句:"\r\n"
作用:文本换行。

随机数
创建:System.Random ran = new System.Random();
例句:int ranNumber = ran.Next(65, 91);
作用:随机取,前闭后开区间,[65,91)内的整数。

int转string
例句:string str = i.ToString();//这里的i是int类型变量
作用:将int类型数据转为string类型字符串。

int转ASCII码
例句:string tempStr = ((char)ranNumber).ToString();
作用:将ranNumber的数字转成ASCII码表中对应的字符,例如:将原数65转为字符A。

获取当前时间,并将日期标准化
例句:DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss fff")
作用:获取当前时间的long值(19位数字),并将该值的显示形式转成自定义的日期格式。

获取当前对象在List中的索引值
例句:list.IndexOf(obj);
作用:获取obj在list中的索引值,若不在list中,则值为-1。

字典值对象的创建
例句:Hashtable ht = new Hashtable();
作用:创建一个名为ht的字典值表对象。

字典内容的增加
例句:ht.Add("key", value);
作用:为名为ht的字典值表添加关联关系,"key"对应value。

判断Hashtable是否包含某个键
例句:if (ht.ContainsKey(de.Key))//这里的de是DictionaryEntry对象,即单对键值对的独立数据对象。
作用:判断键值对表ht中是否含有key值和de的Key值一样的对象。

字典值的foreach遍历
例句:foreach (DictionaryEntry de in ht){...}
作用:对于在键值对表ht中的,每一个独立键值对对象,以下简称de,执行xxx操作。
注意:不能在遍历Hashtable的时候对其内部的键值对进行,增删改,只能换序。
Tips:其实Hashtable和List及其接近,可以理解为一种,以一对数据为单位的List。

获取数组某一维度下的元素数量
例句:arr.GetLongLength(2)//维度是从0开始计的
作用:获取数组arr在第(2+1)维度下的元素数量。
------------------------------------------------
关于物体的运动
------------------------------------------------
物体自转
例句:obj.transform.Rotate(Vector3.方向轴);
作用:使obj对象所绑定的物体,沿着自身的某个方向轴自转。
注意:该例句需要放在Update方法中每帧执行。

物体公转
例句:obj.transform.RotateAround(公转中心对象.transform.position,公转中心对象.transform.方向轴, 60 - Time.deltaTime);
作用:使obj对象所绑定的物体,围绕公转中心对象当前所在位置的点,沿着公转中心对象的某个方向轴,以每秒60跳的速度旋转。
注意:该例句需要放在Update方法中每帧执行。

物体缩放
例句1:obj.transform.localScale = new Vector3(x,y,z);
作用1:设定当前obj对象所绑定的物体的大小。
例句2:obj.transform.localScale = new Vector3(0.1f + Mathf.Sin(Time.time) / 4, 0.1f + Mathf.Sin(Time.time) / 4, 0.1f + Mathf.Sin(Time.time) / 4);//sin函数型缩放
作用2:设定当前obj对象所绑定的物体按照sin型函数实时缩放(0~1倍率),但例句中外加了最小量0.1f防止物体消失,并将sin/4削弱了缩放效果,这是一种对公式效果的数值调整。
注意2:例句2需要放在Update方法中每帧执行,若将=改成+=或-=等类似符号,可产生令原obj按照参数递增/递减体积的效果。

物体的平滑移动(l两点直线型)
例句:obj.transform.position = Vector3.MoveTowards(obj.transform.position, new Vector3(x,y,z), Time.deltaTime * 200.0f);
作用:将obj的位置,以MoveTowards(两点之间走一条直线)的方式,调整到点(x,y,z)处,运动速度为Time.deltaTime * 200.0f。
注意:该例句需要放在Update方法中每帧执行。
------------------------------------------------
关于Rigidbody组件(刚体力学)
------------------------------------------------
Tips:所有预制体的,初始质量默认值,都为1。

施加力
例句:obj.GetComponent<Rigidbody>().AddForce(ran.Next(-20000, 20000), ran.Next(20000, 25000), 0);//这里的ran是Random(随机数)类的对象
作用:对obj对象施加力,在x,y,z轴施加的力分别为(随机(-20000, 20000),随机(20000, 25000),0),施加力的单位为N。

速度矢量
例句:obj.GetComponent<Rigidbody>().velocity = new Vector3(0, 0, 0);
作用:使obj对象当前的运动速度矢量变为(0, 0, 0),即静止。
注意:一般情况下,velocity用于控制速度,而静止对象的速度矢量主要用于,重置由于意外碰撞导致的错误运动状态。
------------------------------------------------
关于UGUI
------------------------------------------------
Tips:本段的内容大部分需要引用类库——using UnityEngine.UI;

3DText的文本内容——(3D类文字贴图,默认会穿透所有对象,需要自制shader产生遮挡效果)
创建:public GameObject testText;//绑定3D文本实体对象。
例句:string str=testText.GetComponent<TextMesh>().text;
作用:获取3DText对象testText的文本内容。

InputField(文本输入框)的文本内容
创建:public InputField obj;//绑定InputField实体对象
例句:string str=obj.GetComponent<InputField>().text;
作用:获取InputField对象obj的文本内容。

Toggle的勾选判定(复选框)
例句:if (obj.isOn == true)
作用:判断当前obj所绑定的复选框是否被勾选。

Dropdown(下拉列表)的文本内容
创建:public Dropdown obj;//绑定Dropdown实体对象
例句:string str=obj.options[obj.value].text;
作用:获取Dropdown对象obj的,当前被选中项的,文本内容。

清空Dropdown的所有选项
例句:obj.ClearOptions();
作用:清空obj所绑定的下拉列表的所有选项。

为Dropdown添加项
例句:obj.AddOptions(list);//这里面的list是List<string>对象
作用:向obj所绑定的下拉列表中,加入list中的所有项。

Dropdown项的存在与否
例句:if (obj.Contains(str) == false)//str是string变量
作用:检测当前obj所绑定的Dropdown是否存在与str字符串的值一致的选项。

对于绝大多数UI组件,都支持以下行为(以Dropdown为例)
public GameObject host;//这个host其实是一个Dropdown,但我们不将其作为一个Dropdown对象引入脚本,目的是为了使用SetActive方法控制其显示
string str = host.GetComponent<Dropdown>().options[host.GetComponent<Dropdown>().value].text;//仍然是获取文本内容
Debug.Log(str);//可以输出
host.SetActive(false);//UI的确隐藏了
但实际上,可以就一组UI总体给一个EmptyObject,引入脚本中,对这个空的obj.SetActive(false),使指定一组UI全部隐藏/显示。
------------------------------------------------
关于Transform组件
------------------------------------------------
物体的空间位置
例句:Vector3 v3 = obj.transform.localPosition;
作用:获取obj的transform组件下的Position(空间位置)属性值,位置数据的数据类型为Vector3(三维矢量)。

------------------------------------------------
关于材质/颜色
------------------------------------------------
物体的颜色
例句:Color color=obj.GetComponent<Renderer>().material.color;
作用:获取obj的Renderer(渲染器)组件的material(材质)下的具体color(颜色),其数据类型为Color。

物体瞬间变色(无可视过程)
例句:obj.GetComponent<Renderer>().material.color = Color.预设颜色;
作用:获取obj的Renderer(渲染器)组件的material(材质),将其基础颜色改为系统预设的某种颜色(可自选,但颜色不多)。

物理渐变颜色
例句:obj.GetComponent<Renderer>().material.color = Color.Lerp(testColor1, testColor2, 0.01f);
作用:将obj的颜色从testColor1逐渐变为testColor2,变色速度在[0,1]之间,这里取0.01f,0为永不变色(变化速度为0),1为瞬间变色。
注意:该例句需要放在Update方法中每帧执行。
------------------------------------------------
其他杂项
------------------------------------------------
Unity控制台的输出语句
例句:Debug.Log("Error");
作用:在Unity3D的控制台中输出文字Error。

自动生成(1个)物体(需要给定位置/空间域)
例句1:Instantiate(要自动生成的对象, new Vector3(x的值或范围,y的值或范围,z的值或范围), Quaternion.identity);
例句2:Instantiate(dropWord, new Vector3(Random.Range(-50f, 50f), 60f, Random.Range(0f, 10f)), Quaternion.identity);
作用2:自动生成(1个)dropWord对象所绑定的预制体,允许生成物体的空间域:X在-50~50,Y定死为60,Z在0~10。

物体的显示与隐藏
例句:obj.SetActive(true/false);
作用:控制实例对象在当前场景中的显示与隐藏,但隐藏依然会占用内存资源。

场景初始化
例句:Application.LoadLevel(Application.loadedLevelName);
作用:重置当前场景(Sence),将该场景中所有的对象及其组件回归到最初的状态。
注意:该例句仅适用于PC端/安卓端,不确定是否适用于Hololens端。(需测试)

退出程序
例句:Application.Quit();
作用:退出(关闭)当前应用。
注意:该例句仅适用于PC端/安卓端,不确定是否适用于Hololens端。(需测试)

猜你喜欢

转载自blog.csdn.net/qq_37136550/article/details/80747000
今日推荐