我看过互联网,但我无法找到问题的解决方案。我正在尝试创建一个游戏,它有3个场景:游戏开始,主要游戏和游戏结束。
问题在于,当尝试从其他场景加载主级别时,它不会执行它必须做的事情(例如跳转)并且场景本身是滞后的。当我尝试仅加载主场景时,它可以正常工作,但是在角色死亡并且场景重新加载后,它又开始滞后,我无法跳跃或做任何应该做的事情。
关于问题可能是什么的任何想法?
using UnityEngine;
using System;
public class Player : MonoBehaviour
{
// The force which is added when the player jumps
// This can be changed in the Inspector window
public Vector2 jumpForce = new Vector2(0, 300);
private bool shouldJump = true;
// Update is called once per frame
private float jumpThreshold = 0.5f;
private float previousJumpTime;
void FixedUpdate ()
{
// Jump
float mc = MicControl.loudness;
//Debug.Log (mc);
if (mc>1.3f && shouldJump)
{
shouldJump = false;
previousJumpTime = Time.time;
GetComponent<Rigidbody2D>().velocity = Vector2.zero;
GetComponent<Rigidbody2D>().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();
}
}
// Die by collision
void OnCollisionEnter2D(Collision2D other)
{
Die();
}
void Die()
{
Application.LoadLevel ("main");
}
}
&#13;
答案 0 :(得分:0)
你说你的等级叫做Main,但是在你加载“main”的代码中,我不确定这是不是问题,但是你似乎正在正确加载等级,所以检查是否为main或Main确切的级别名称。
此外,在编译时,请确保已检查所有级别
答案 1 :(得分:0)
使用提供的数据无法说出导致性能低下的原因,但我建议您使用 Profiler 工具(可以在Unity 5的个人版本中找到)并找出哪些脚本和功能存在问题
另外,尽量避免在Update / FixedUpdate / LateUpdate中调用GetComponent<Rigidbody2D>()
并缓存此组件。
答案 2 :(得分:0)
我是Utamaru说的第二个。
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();
}
}
我无法看到你的其他代码,所以我不确定这是问题,但试一试。