我有两个文件,class1.cs和prologue.cs。在序言中有一个公开的布尔语“ Panic”。

序言

public partial class Prologue : Script{

     public bool Panic;

     public void PrologueMission(){ //Called when the script starts
         Panic = true;
     }


在class1.cs中

void Update10(){ //Runs this function every 10 seconds
    Prologue prologue = new Prologue(); //prologue.cs
    if (prologue.Panic) {
        //code...
    }
}


问题是,bool Panic在Class1.cs中仍然为false,因此我创建了一个log方法来查找正在发生的事情。恐慌在Prologue.cs中变为true,但在Class1.cs中保持false。

我尝试了其他方法,例如静态变量和返回true / false的方法,但似乎都无效,因此我被困在这里。

简而言之:为什么在Prologue.cs中将bool Panic设置为true,但在Class1.cs中始终保持false。

希望您也可以解释一下此方法不起作用的原因,但是希望您能回答任何问题!

编辑:日志:

Prologue: .Panic:True //Set to true in Prologue.cs
prologue.Panic: False //False in class1.cs
prologue.Panic: False //False in class1.cs
prologue.Panic: False //False in class1.cs
Prologue: .Panic:True //Set to true in Prologue.cs again
prologue.Panic: False //False in class1.cs
prologue.Panic: False //False in class1.cs
prologue.Panic: False //False in class1.cs

最佳答案

仅通过调用PanicPrologueMission设置为true。

您没有打电话。

 void Update10(){ //Runs this function every 10 seconds
  Prologue prologue = new Prologue(); //prologue.cs

  prologue.PrologueMission(); // <<<<

  if (prologue.Panic) {
      //code...
  }
 }




如果希望最初进行设置,则必须在Prologue的构造函数中进行设置

public partial class Prologue : Script{

    public bool Panic;

    public Prologue()
    {
      Panic = true;
    }

    //...
}


与以下内容相同:

public partial class Prologue : Script{

    public bool Panic = true;

    // ...
}




根据评论:您将不得不在更新方法之外存储Prologe实例:

public class Class1
{
   Prologue myPrologue = new Prologue();
   //...
   void AnotherMethod()
   {
     myPrologue.PrologueMission();
   }
   //...
   void Update10()
   {
     if (myPrologue.Panic)
     {
        //code...
     }
   }
}

09-11 18:18
查看更多