【问题标题】:Reduce lag caused by a script in Unity 2d减少 Unity 2d 中脚本造成的延迟
【发布时间】:2015-10-04 15:54:05
【问题描述】:

我正在使用这个脚本来制作背景滚动。背景是四边形上的材质:

using UnityEngine;
using System.Collections;

public class scrollBG : MonoBehaviour {


     Update is called once per frame
    void Update () {

        MeshRenderer mr = GetComponent<MeshRenderer> ();

        Material mat = mr.material;

        Vector2 offset = mat.mainTextureOffset;

        offset.x += Time.deltaTime / 6f;

        mat.mainTextureOffset = offset; 

    }
}

在进入游戏大约 30 秒之前,它都可以正常工作,然后它会变得非常迟钝,并且会逐渐变得更糟。游戏设置非常简单,只是行星从屏幕一侧飞到另一侧的风景视图,您必须躲避。我怎样才能改善滞后? (行星移动得很好)。可能值得一提的是,我正在为 Android 开发。

【问题讨论】:

    标签: c# android performance unity3d-2dtools


    【解决方案1】:

    1) 我不知道你可以做多大的贴图这么长偏移。我以为在这种情况下,只需移动对象,然后更改其...

    2) GetComponent 运行时间很长。 (mr.material too) 使用缓存。试试这个:

    MeshRenderer mr;
    Material mat;
    
        void Start(){
            mr = GetComponent<MeshRenderer> ();
            mat = mr.material;
        }
    
        void Update () {
            Vector2 offset = mat.mainTextureOffset;
    
            offset.x += Time.deltaTime / 6f;
    
            mat.mainTextureOffset = offset; 
        }
    

    【讨论】:

    • 谢谢。我刚刚尝试过,它在 Unity 的游戏窗口中效果更好,但在 Android 设备上仍然如此。
    • 我不喜欢你的偏移量。你在课堂上看到过这个吗?你确定这是代码的情况吗?你试过清理它吗?也许你在组装包时选择了不正确的视频适配器?
    • 我是从 YouTube 上得到的,是的。我还能用偏移量做什么?
    • 尝试制作移动精灵
    • 精灵不能作为四边形的纹理?如果你的意思是完全重写这个,有没有可能用一些代码向正确的方向推进?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    相关资源
    最近更新 更多