zoukankan      html  css  js  c++  java
  • unity 小功能、知识点一

    定时重复处理,比如, 启动0.5秒后每隔1秒执行一次 DoSomeThing 函数:
    1.用InvokeRepeating 函数实现
    void Start() { InvokeRepeating("DoSomeThing", 0.5, 1.0); }
    CancelInvoke("你调用的方法"); 停止InvokeRepeating

    void Start()
    {
         StartCoroutine("Repeating");开始调用
         StopCoroutine("Repeating");停止调用
    }
    IEnumerator Repeating()
        {
            yield return new WaitForSeconds(0.5f);
    
            while (true)
            {
                yield return new WaitForSeconds(1f);
                DoSomeThing();
            }
        }

    尽量避免每帧处理,可以每隔几帧处理一次
    比如:
    void Update() { DoSomeThing(); }

    可改为每5帧处理一次:
    void Update() { if(Time.frameCount % 5 == 0) { DoSomeThing(); } }

    主动回收垃圾
    给某个 GameObject 绑上以下的代码:
    void Update() { if(Time.frameCount % 50 == 0) { System.GC.Collect(); } }

    不要使用SendMessage之类的方法,他比直接调用方法慢了100倍,你可以直接调用或通过C#的委托来实现。

    关于渲染队列和Batch的非官方经验总结是,一帧的渲染队列的生成,依次决定于每个渲染物体的:
    Shader的RenderType tag,
    Renderer.SortingLayerID,
    Renderer.SortingOrder,
    Material.renderQueue(默认值为Shader里的"Queue"),
    Transform.z(ViewSpace)(默认为按z值从前到后,但当Queue是“Transparent”的时候,按z值从后到前)。
    这个渲染队列决定了之后(可能有dirty flag的机制?)渲染器再依次遍历这个渲染队列,“同一种”材质的渲染物体合到一个Batch里。

    Unity渲染路径(Rendering Path)种类
    概述
    开发者可以在Unity工程的PlayerSettings设置对渲染路径进行3选1:
    Deferred Lighting,延迟光照路径。3者中最高质量地还原光照阴影。光照性能只与最终像素数目有关,光源数量再多都不会影响性能。
    Forward Rendering,顺序渲染路径。能发挥出Shader全部特性的渲染路径,当然也就支持像素级光照。最常用、功能最自由,性能与光源数目*受光照物体数目有关,具体性能视乎其具体使用到的Shader的复杂度。
    Vertex Lit,顶点光照路径。顶点级光照。性能最高、兼容性最强、支持特性最少、品质最差。

    unity 点击2D物体
    1.给物体添加对应的2D碰撞体,例如Box Collider 2D;
    2.Update检测鼠标是否点下;
    3.如果鼠标点下,创建一条射线,通过Physics2D.Raycast获取点击时鼠标处的对象;

    从游戏开始到当前帧经历的时间 Time.realtimeSinceStartup;
    从游戏开始到当前帧经历的帧总数 Time.frameCount;

    计算FPS:

    得到当前帧鼠标的位移量:Input.GetAxis()

    对象跟随鼠标运动:

    Vector3 wp = Camera.main.WorldToScreenPoint(transform.position);
    Vector3 sp = Input.mousePosition;
    sp.z = wp.z;
    
    if (Input.GetMouseButton(0))
    {
    transform.position = Camera.main.ScreenToWorldPoint(sp);
    }
    一直想把之前工作、学习时记录的文档整理到博客上,一方面温故而知新,一方面和大家一起学习 -程序小白
  • 相关阅读:
    使用iframe从网页调起移动端应用
    综合练习:词频统计
    组合数据类型练习
    python 绘制五星红旗
    熟悉常用的Linux操作
    大数据概述
    windowBackground打造闪屏页
    安卓日期选择对话框
    c语言语法分析器
    C语言文法
  • 原文地址:https://www.cnblogs.com/wang-jin-fu/p/8277650.html
Copyright © 2011-2022 走看看