Unity3D场景工作不正常,重新加载后延迟

Unity3D场景工作不正常,重新加载后延迟,unity3d,reload,lag,scene,die,Unity3d,Reload,Lag,Scene,Die,我在互联网上找遍了,但我找不到解决问题的办法。我正在尝试创建一个游戏,它有3个场景:游戏开始、主场景和游戏结束 问题是,当尝试从其他场景加载主关卡时,它不会执行它必须执行的操作,例如跳跃,并且场景本身是滞后的。当我尝试只加载主场景时,它工作正常,但在角色死亡并重新加载场景后,它再次开始延迟,我无法跳转或执行它应该执行的任何操作 你知道问题出在哪里吗 使用UnityEngine; 使用制度; 公共类玩家:单一行为 { //运动员跳跃时增加的力量 //这可以在Inspector窗口中更改 公共向量

我在互联网上找遍了,但我找不到解决问题的办法。我正在尝试创建一个游戏,它有3个场景:游戏开始、主场景和游戏结束

问题是,当尝试从其他场景加载主关卡时,它不会执行它必须执行的操作,例如跳跃,并且场景本身是滞后的。当我尝试只加载主场景时,它工作正常,但在角色死亡并重新加载场景后,它再次开始延迟,我无法跳转或执行它应该执行的任何操作

你知道问题出在哪里吗

使用UnityEngine; 使用制度; 公共类玩家:单一行为 { //运动员跳跃时增加的力量 //这可以在Inspector窗口中更改 公共向量2 jumpForce=新向量20300; 私有bool shouldJump=true; //每帧调用一次更新 专用浮动跳线阈值=0.5f; 私人浮动时间; 无效固定更新 { //跳跃 浮动mc=微秒控制。响度; //Log-mc; 如果mc>1.3f&&shouldJump { shouldJump=false; previousJumpTime=Time.Time; GetComponent.velocity=Vector2.0; GetComponent.AddForcejumpForce; } 如果!应该跳吗 { ifTime.time previousJumpTime>jumpThreshold { shouldJump=true; } } //在银幕之外死去 Vector2屏幕位置=Camera.main.WorldToScreenPointtransform.position; 如果screenPosition.y>Screen.height | | screenPosition.y<0 { 死亡 } } //撞死 void oncollisionInter2dCollision2D其他 { 死亡 } 空模 { Application.loadlevelmain; }
} 您说过您的级别名为Main,但在您加载Main的代码中,我不确定这是否是问题所在,但您似乎正确加载了该级别,因此请检查是Main还是Main级别的确切名称


此外,在编译时,请确保已使用提供的数据检查了所有级别。无法确定是什么原因导致性能低下,但我建议您使用个人版Unity 5中的探查器工具,并找出哪些脚本和函数存在问题


另外,尽量避免在Update/FixedUpdate/LateUpdate中调用GetComponent,而是缓存该组件

我赞同尤塔马鲁说的话

    Rigidbody2D myRigidbody2d;

    void Start ()
    {
    myRigidbody2d = GetComponent<Rigidbody2D>(); //Do this once
    }
在固定更新中,您可以执行以下操作:

void FixedUpdate ()
    {
        // Jump
        float mc = MicControl.loudness;

        //Debug.Log (mc);
        if (mc>1.3f && shouldJump)
        {
            shouldJump = false;
            previousJumpTime = Time.time;
            myRigidbody2d.velocity = Vector2.zero;
            myRigidbody2d.AddForce(jumpForce);
        }

        if (!shouldJump) 
        {
            if(Time.time-previousJumpTime>jumpThreshold)
            {
                shouldJump = true;
            }
        }

        // Die by being off screen
        Vector2 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
        if (screenPosition.y > Screen.height || screenPosition.y < 0)
        {
            Die();
        }
    }

我看不到您的其余代码,因此我不确定这是否是问题所在,但请尝试一下。

我猜它正在场景中加载脚本,而旧脚本和游戏对象没有被销毁。如果你不看你的代码和场景,你就帮不了你……我已经更新了帖子。请检查一下你们是否有任何想法:在看不到其他脚本和场景层次结构的情况下,很难这么说