谷歌纸板磁石刷新在Unity3d中不起作用
我正在使用谷歌硬纸板做一个Unity项目,基于我的设计,硬纸板磁铁使球跳跃,它第一次工作,但每当游戏重新启动时,使用Application.LoadLevel,球就不再跳跃;这只是小故障。我我已经用一个测试应用程序测试了这个脚本Magnetsensor脚本,在这个测试应用程序中,每当拉动磁铁时,文本都会改变颜色,并且一直工作。这是我的控球脚本我称之为磁铁感应的脚本:谷歌纸板磁石刷新在Unity3d中不起作用,unity3d,Unity3d,我正在使用谷歌硬纸板做一个Unity项目,基于我的设计,硬纸板磁铁使球跳跃,它第一次工作,但每当游戏重新启动时,使用Application.LoadLevel,球就不再跳跃;这只是小故障。我我已经用一个测试应用程序测试了这个脚本Magnetsensor脚本,在这个测试应用程序中,每当拉动磁铁时,文本都会改变颜色,并且一直工作。这是我的控球脚本我称之为磁铁感应的脚本: #pragma strict var rotationSpeed = 100; var jumpHeight = 8; var H
#pragma strict
var rotationSpeed = 100;
var jumpHeight = 8;
var Hit01 : AudioClip;
var Hit02 : AudioClip;
var Hit03 : AudioClip;
var distToGround : float;
function Start () {
// Getting the distance from the center to the ground.
distToGround = collider.bounds.extents.y;
}
function Update ()
{
//Handle ball rotation.
var rotation : float = Input.GetAxis(“Horizontal”) * rotationSpeed;
rotation *= Time.deltaTime;
rigidbody.AddRelativeTorque (Vector3.back * rotation);
MagnetSensor.OnMagnetPull += JumpOnMagnet; //important
}
function JumpOnMagnet () { //important
rigidbody.velocity.y = jumpHeight; //important
} //important
function IsGrounded () : boolean { //Check if we are on the ground. Return true if we are else return null.
return Physics.Raycast(transform.position, -Vector3.up, distToGround + 0.1);
}
function OnCollisionEnter () {
var theHit = Random.Range(0, 3);
if (theHit == 0)
{
audio.clip = Hit01;
}
else if (theHit == 1)
{
audio.clip = Hit02;
}
else {
audio.clip = Hit03;
}
audio.pitch = Random.Range (0.9,1.1);
audio.Play();
}
以下是我的重新启动脚本:
#pragma strict
var maxFallDistance = -10;
private var isRestarting = false;
var level : String;
var GameOverSound : AudioClip;
function Update ()
{
if (transform.position.y <= maxFallDistance)
{
if (isRestarting == false)
{
RestartLevel();
}
}
}
function RestartLevel () {
isRestarting = true;
audio.pitch = 1;
audio.clip = GameOverSound;
audio.Play();
yield WaitForSeconds (audio.clip.length);
Application.LoadLevel(level);
}
请让我知道可能出现的问题以及我如何解决这些问题。另外,如果您能为我指出任何有帮助的网站或资源,我将不胜感激。不要做MagnetSensor.OnMagnetPull+=JumpOnMagnet;在更新函数中。在Start中调用它,因此只添加一次
此外,还应添加OnDestroy函数并调用MagnetSensor.OnMagnetPull-=JumpOnMagnet;在其中。请正确格式化您的代码,并至少说明一个问题。我也是一名新手,所以您能告诉我为什么我应该使用OnDestroy函数。MagnetSensor.OnMagnetPull事件是静态的,因此它可以跨级别加载保存。但是当加载新级别时,当前级别的游戏对象将被销毁并释放。这将在静态事件中留下对已销毁对象的引用。OnDestroy方法允许您在对象被销毁之前清除对对象的此类引用。