c# - 如何检查游戏对象是否具有特定属性?

标签 c# unity3d

我有一个带有 public boolean isIndestructible = true 属性的 Player 对象。我还有一个具有以下功能的 Mine 对象:

void OnCollisionEnter2D(Collision2D other) {
    if (other.gameObject.CompareTag("Player") && !other.gameObject.isIndestructible) {
        SceneManager.LoadScene("Game");
    }
}

基本上,如果 Player 对象不是坚不可摧的,我只想重新加载游戏。但是这段代码不起作用(gameObject 没有 isIndestructible 作为属性),那么找到它的正确方法是什么?

最佳答案

I have a Player object with a public boolean isIndestructible = true property.

所以您已经将 MonoBehaviour 附加到 Player 对象,对吗?

Player.cs

using UnityEngine;

public class Player : MonoBehaviour
{
    public bool isIndestructible {get; set;}
}

获取Mine中的isIndestructible属性,

void OnCollisionEnter2D(Collision2D other) {
    var player = other.gameObject.GetComponent<Player>();
    if(player != null && player.isIndestructible){        
        SceneManager.LoadScene("Game");
    }
}

关于c# - 如何检查游戏对象是否具有特定属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49090793/

相关文章:

c# - 统一。尝试伪造内部船舶重力。旋转物体的刚体 child 不断滑动

c# - 如何在不使用 transform.Rotate 的情况下在其本地或世界轴上旋转具有第二个四元数的四元数?

c# - EventSystem.Update() 在 Android 上的第一次屏幕触摸时出现巨大的性能峰值

c# - 从 url 加载和显示图像

c# - 删除重复的元素 List<Vector3> Mono/C# - Unity3D

c# - 具有单个编写器的 MemoryMappedFile 是否需要同步

c# - HttpRequestMessage 更改 cookie 值

c# - Linq 或 Lambda 表达式的抽象级别更高

c# - 如何在 DevExpress GridControl 中填充最后一列的宽度?

c# - 免费的 WinForms 图像编辑器控件