Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 防止另一个触发器触发一个触发器_C#_Unity3d_Triggers_Collision Detection - Fatal编程技术网

C# 防止另一个触发器触发一个触发器

C# 防止另一个触发器触发一个触发器,c#,unity3d,triggers,collision-detection,C#,Unity3d,Triggers,Collision Detection,当另一个触发器激活时,如何防止触发器触发。当一个触控触发器被激活时,另一个触发器被激活,而不会(代码中任何明显的)强制激活 [触发器1(第一个要激活的触发器)] [触发器2(在触发器1之后无故激活的触发器)] 绿色块=第一个触发器 红色块=第二个触发器 概念是在触发器主体中使用额外的bool变量和if语句。您甚至可以使用内置的“enabled”属性,记住触发器无论如何都会触发 public class Trigger1 : MonoBehaviour { public Trigger2 tri

当另一个触发器激活时,如何防止触发器触发。当一个触控触发器被激活时,另一个触发器被激活,而不会(代码中任何明显的)强制激活

[触发器1(第一个要激活的触发器)]

[触发器2(在触发器1之后无故激活的触发器)]

绿色块=第一个触发器 红色块=第二个触发器


概念是在触发器主体中使用额外的bool变量和if语句。您甚至可以使用内置的“enabled”属性,记住触发器无论如何都会触发

public class Trigger1 : MonoBehaviour {
 public Trigger2 trigger2;
 void Start()
  {
    trigger2.enabled=false;
  }
  private void OnTriggerEnter(Collider other)
  {
     trigger2.enabled=true;
  }
}


}

在澄清您试图在触发第一个触发器后启用第二个触发器后,以下是添加该功能的最不具侵入性的方式(基于您提供的代码):


我认为你的问题措辞不正确?您想在触发触发器2时加载新级别,但触发器2只能在触发触发器1后触发?那么,触发器1->触发器2->加载场景“level3”?是触发器1导致触发器2可用
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Level2Win : MonoBehaviour
{
    private void OnTriggerEnter(Collider other)
    {
        SceneManager.LoadScene("level3");
    }
}
public class Trigger1 : MonoBehaviour {
 public Trigger2 trigger2;
 void Start()
  {
    trigger2.enabled=false;
  }
  private void OnTriggerEnter(Collider other)
  {
     trigger2.enabled=true;
  }
public class Trigger2 : MonoBehaviour {
private void OnTriggerEnter(Collider other)
{
 if (enabled)
    {do something else}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Trigger1 : MonoBehaviour
{

    // Drag your Leve2Win trigger into the following Inspector object slot.
    public Level2Win Trigger2;

    private void Awake()
    {
        Trigger2.enabled = false;
    }

    private void OnTriggerEnter(Collider other)
    {
        Destroy(GameObject.Find("Block2"));
        Trigger2.enabled = true;
    }
}