我怎么能在我的团结安卓游戏中消除滞后?

时间:2015-10-29 05:40:47

标签: android unity3d unityscript

我是adroid proggrammer,因为场景中的很多对象我的游戏已经滞后了 我有理论在我的游戏中消除滞后。 如果我可以控制渲染统一,我可以删除滞后。 enter image description here

using UnityEngine;
using System.Collections;

public class Enemy : MonoBehaviour {
        void Update(){
    void Start(){
        GetComponent<Renderer>().enabled = false;
    }
            object2 = GameObject.Find("TR");
            var distance = Vector3.Distance(gameObject.transform.position, object2.transform.position);
            print (distance);
            if(distance <= 80){
            GetComponent<Renderer>().enabled = true;
        }
    }
}

不要工作。我可以使用布尔渲染,当碰撞时会渲染 否则删除。 我希望有一个区域,我的区域中的所有对象都被渲染,外面的所有对象都不会渲染。

    void OnTriggerEnter(Collider collision)
    {
        if(collision.gameObject.tag == "zone")
        {
            GetComponent<Renderer>().enabled = true;
        }
else{
               GetComponent<Renderer>().enabled = false;
}

不起作用

    void OnTriggerEnter(Collider collision)
    {
        if(collision.gameObject.tag == "zone")
        {
            gameObject.SetActive(false);
        }
else{
               gameObject.SetActive(true);
}

3 个答案:

答案 0 :(得分:0)

这要么在Unity中实现,要么实现它是一个坏主意,因为光线投射很昂贵,你需要很多。尝试找出导致游戏滞后的其他问题,按功能禁用功能并写下您拥有的帧数,这样可以最全面地了解问题所在。在线查看哪些方法很昂贵(实例化,销毁,尝试合并您拥有的所有模型,较少量的着色器,快速着色器,较少的纹理以加载,FindGameObjectByName(或标记...))。

答案 1 :(得分:0)

在这里,您将找到一篇关于优化的精彩文档。它已为移动设备预备,但我希望您能找到所需内容:Unity Optimization Guide for x86 Android

答案 2 :(得分:0)

我建议您将蓝色斑点放在对象池中,然后让屏幕上的蓝色斑点停用。

你知道你的位置,你知道池中物体的位置,你可以在一个方向上计算距离,例如在你后面,并在x量之后禁用。 光线传播或碰撞很多。

在地形生成脚本上,检查已禁用的池对象,如果存在,则应将其放在级别中,然后重新定位或使用w / e逻辑。

除非你真的需要它,否则不要实例化和销毁它,而是在级别加载而不是动态上进行。 (这很贵。)

在统一页面上有一些非常好的教程,看看那里。 他们涵盖了无尽的跑步者。