个人在Unity3D开发中常用的小方法总结

----------------------------------------
销毁物体
----------------------------------------
Tips:这里需要实际研究OnTriggerEnter和OnCollisionEnter的区别和用法,可能存在Update方法中的实时监测方式
void OnCollisionEnter(Collision collisionInfo)
{
    Destroy(collisionInfo.gameObject);
}
作用:将触碰到,写有以上代码段的,绑定有该脚本的物体,所碰到的其它物体全部销毁。
----------------------------------------
对象的集中管理
----------------------------------------
List<对象类型> list= new List<对象类型>();
public void listInit()//对象列表初始化
{
    list.Add(对象1);
    list.Add(对象2);
    list.Add(对象3);
}
----------------------------------------
按钮的监听(UGUI画布中的Button)——需要调整内容,关于delegate委托方法的知识点
----------------------------------------
foreach (Button btn in ButtonList)//这里的ButtonList容器中,已经事先装入了一些Button类型对象
{
    btn.onClick.AddListener(delegate()//为这个按钮设置监听器,并运行delegate ()委托方法,同时因为方法体短小,直接写{}内部
    {
        OnClickM(btn);//当前类调用对象,即GestureControlSystem调用OnClick(obj),委托调用通过监听器触发
    });
}
----------------------------------------
对象的检索
----------------------------------------
1.按照字符串/数值检索并执行对应方法
public void OnClickM(Button btn)
{
    switch (btn.name)
        {
            case "ButtonName":
        该情况下要执行的代码...........
                break;
       其他case:
        break;
        *
        *
        *
        *
            default:
                Debug.Log("Error");
                break;
    }
}
注意1:传入该方法的参数可以为GameObject等其他类型。
注意2:例句组中虽然以名字进行检索,但有些情况下也会给出一个int变量,以不同的值进行分支处理。
注意3:例句组中的"ButtonName"可以更换成其他绑定了实例对象的name属性,即obj.name。
----------------------------------------
协程(根据时间控制线程/进程的运行进度)
----------------------------------------
IEnumerator testIE () 
{
    //等待时停前,执行的代码
    yield return new WaitForSeconds(2.5f);//2.5f代表时停的时长,即2.5秒,f是float类型数值必须加的后缀
    //等待时停后,执行的代码
}
注意1:yield return短语只能在协程(IEnumerator)方法中被使用,是协程类特有的返回方式。
注意2:一个IEnumerator方法中可以有多个时停(yield return)点,也可以在循环中加入时停点。
注意3:yield return不会直接跳出方法或传出参数,仅仅代表时停点,所以在通常情况下,IEnumerator方法一定会被完整的执行完,或者直接跳过不被执行(非报错型错误)。
----------------------------------------
文本的读写(txt)
----------------------------------------
逐行式读取
foreach (var line in File.ReadAllLines("文件路径"))
{
    list.Add(line.Split(','));
}
作用:读取txt文件的每一行,并按逗号分割,存入list中,这里的list是ArrayList对象,因为split返回对象就是数组

写入/换行写入
FileStream fs = new FileStream("文件路径", FileMode.Create);//Create模式下,有则覆盖文件,无则创建文件
StreamWriter sw = new StreamWriter(fs);//这是写入流对象
sw.Write("***");//写入
sw.WriteLine("***");//换行写入
//清空缓冲
sw.Flush();
//关闭流
sw.Close();
fs.Close();
注意:清空缓冲很重要,如果没有这一项,写入文件到一定字符量会停止继续写入,导致文件内容缺失。
----------------------------------------
协程方法的调用方式
----------------------------------------
void Start () 
{
    StartCoroutine(testIE());

}
注意1:所有IEnumerator类型函数必须使用StartCoroutine(协程方法名())这个函数触发,不能单独使用。
注意2:Start方法可以将其返回值类型改变为IEnumerator ,这时无需StartCoroutine调用,但此方式不符合规范,请尽可能避免。
 

猜你喜欢

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