zoukankan      html  css  js  c++  java
  • Unity3D自己常用代码

    常需要,常查找!

    自己记录下!

    1.

        var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            //GameObject.CreatePrimitive(PrimitiveType.Cube).transform.position = ray.GetPoint(10.0f);
            transform.LookAt(ray.GetPoint(10.0f));

    2.

    提高效率

    GetComponent(), FindObjectByType() and Instantiate()
    尽量少使用。


    3. InvokeReapting 的内部实现


    实现过程
    {
       找到函数方法名称,存储
    等待调用时间,WaitForSeconds(time)
    循环知道用户取消
    {
    Invoke 存储的函数方法
    等待时间
    }
    删除记录保存的方法
    }
    

    4. 

    Coroutine 和InvokeReapting

    协同程序,不是多线程。但是他有自己的堆栈,局部变量,指令指针,与其他协同程序共享全局变量等信息。在多处理器下,多线程同时运行,协同程序,在某时刻之有一个在运行。

    若你有个负责的任务,它非常费帧率,就考虑使用协同或InvokeReapting.

    若是简单任务,就嫑在协同或InvokeReapting使用,这不会提高效率的。

    但是也不用太死板。尽管可能降低效率,代码会更简单和实用。

    协同是处理时间序列的一种很好的方法。

    它不是线程也不是异步。

    协同当脚本未激活或对象为激活时不可用。

    协同返回时间的WaitForSeconds依赖于Time.timeScale.

     

    InvokeReapting
     
    /*
    void InvokeRepeating(string methodName, float time, float repeatRate)
    {
       - Find the method called "methodName" in the calling assembly and store it.
       - Wait "time" seconds by yielding on WaitForSeconds(time)
       Loop until the user cancels this action
       {
          - Invoke the stored method
          - Wait "repeatTime" seconds by yielding on WaitForSeconds(repeatRate)
       }
       - Remove the method info record from storage.
    }
    */

    使用InvokeInvokeReapting,这样很难调试。


  • 相关阅读:
    jquery中attr和prop的区别
    Server.MapPath用法
    ERP登录(八)
    ViewBag、ViewData和TempData的使用和区别
    ERP权限系统(七)
    C#泛型(三)
    ERP员工入登记查询(六)
    ERP员工入职登记(五)
    MVC学习IIS的不同版本(一)
    兔子谋杀案
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461944.html
Copyright © 2011-2022 走看看