Unity 2D - 如何播放死亡动画预制件
Unity 2D - How to play death animation prefab
我已经用 sprite sheet 的动画创建了一个预制件,我想在玩家死亡时播放它。我通过在场景中拖动它来检查预制件是否正常工作,并且它正在无休止地循环播放精灵的每一帧 sheet。
现在我想在玩家死亡时播放这个预制件,并在它结束后销毁它,但到目前为止我只能将它放在玩家死亡的地方,并且永远留在那里。发生这种情况时也会出现一些错误。
这里是死亡剧本:
public class DmgByCollisionEnemy : MonoBehaviour {
public GameObject deathAnimation;
void Die() {
deathAnimation = (GameObject) Instantiate(deathAnimation, transform.position, transform.rotation);
//Destroy(deathAnimation);
Destroy(gameObject);
}
}
我是在Unity界面拖一个prefab设置deathAnimation
Die()
方法触发时我得到的错误是
UnassignedReferenceException: The variable deathAnimation of DmgByCollisionEnemy has not been assigned.
You probably need to assign the deathAnimation variable of the DmgByCollisionEnemy script in the inspector.
那么我怎样才能正确地做到这一点?
您可以尝试将简单的销毁脚本添加到您的死亡动画对象中,以便在一段时间后销毁对象或在动画中触发它(Unity Manual: Using Animation Events)。当您实例化对象时,它会出现在所需位置,并且无论 "main" 对象如何,它都会被销毁。
像这样销毁脚本:
void DestroyMyObject()
{
Destroy(gameObject);
}
运行 之后的脚本:
void Start()
{
Invoke ("DestroyMyObject", 1f);
}
void DestroyMyObject()
{
Destroy(gameObject);
}
生成脚本:
using UnityEngine;
using System.Collections;
public class SpawnExtra : MonoBehaviour {
public GameObject deathAnimation;
public static SpawnExtra instance;
void Start ()
{
instance = this;
}
public void SpawnDeathAnimation(Vector3 position)
{
Instantiate (deathAnimation, position, Quaternion.identity);
}
}
当你想像这样生成额外的对象时,你可以使用它:
SpawnExtra.instance.SpawnDeathAnimation (transform.position);
现在你必须添加游戏对象,例如 ExtrasController,在其上添加脚本,然后你可以生成任何你想要的东西。记得在检查器中拖放动画预制件。
我已经用 sprite sheet 的动画创建了一个预制件,我想在玩家死亡时播放它。我通过在场景中拖动它来检查预制件是否正常工作,并且它正在无休止地循环播放精灵的每一帧 sheet。
现在我想在玩家死亡时播放这个预制件,并在它结束后销毁它,但到目前为止我只能将它放在玩家死亡的地方,并且永远留在那里。发生这种情况时也会出现一些错误。
这里是死亡剧本:
public class DmgByCollisionEnemy : MonoBehaviour {
public GameObject deathAnimation;
void Die() {
deathAnimation = (GameObject) Instantiate(deathAnimation, transform.position, transform.rotation);
//Destroy(deathAnimation);
Destroy(gameObject);
}
}
我是在Unity界面拖一个prefab设置deathAnimation
Die()
方法触发时我得到的错误是
UnassignedReferenceException: The variable deathAnimation of DmgByCollisionEnemy has not been assigned.
You probably need to assign the deathAnimation variable of the DmgByCollisionEnemy script in the inspector.
那么我怎样才能正确地做到这一点?
您可以尝试将简单的销毁脚本添加到您的死亡动画对象中,以便在一段时间后销毁对象或在动画中触发它(Unity Manual: Using Animation Events)。当您实例化对象时,它会出现在所需位置,并且无论 "main" 对象如何,它都会被销毁。
像这样销毁脚本:
void DestroyMyObject()
{
Destroy(gameObject);
}
运行 之后的脚本:
void Start()
{
Invoke ("DestroyMyObject", 1f);
}
void DestroyMyObject()
{
Destroy(gameObject);
}
生成脚本:
using UnityEngine;
using System.Collections;
public class SpawnExtra : MonoBehaviour {
public GameObject deathAnimation;
public static SpawnExtra instance;
void Start ()
{
instance = this;
}
public void SpawnDeathAnimation(Vector3 position)
{
Instantiate (deathAnimation, position, Quaternion.identity);
}
}
当你想像这样生成额外的对象时,你可以使用它:
SpawnExtra.instance.SpawnDeathAnimation (transform.position);
现在你必须添加游戏对象,例如 ExtrasController,在其上添加脚本,然后你可以生成任何你想要的东西。记得在检查器中拖放动画预制件。