【问题标题】:how to access a variable in another script in a unity project [duplicate]如何在统一项目中访问另一个脚本中的变量[重复]
【发布时间】:2020-03-23 17:50:24
【问题描述】:

我有一个实例化硬币的脚本和另一个用于硬币本身的脚本。所以一旦硬币本身被玩家收集,它应该消失并告诉第一个脚本实例化另一个。我多次尝试跨单独的脚本访问布尔值......

//script 1
public script2name scriptVar;

void start()
{
    scriptVar.GetComponent<script2name>();
}
void func()
{
    if (scriptVar.boole1 == true)
    { //create another coin 
    }
}

//script 2 (script2name)
public bool Boole1 = false;
void func()
{
    // picks up coin
    Boole1 = true;
}

我试过了,但是系统没有反应,我再也没有得到过硬币,它根本不起作用。

【问题讨论】:

    标签: c# unity3d boolean instantiation


    【解决方案1】:

    所以我猜唯一真正可以从一个脚本转移到另一个脚本的变量是整数。因此,您的脚本必须跟踪来自单独脚本的整数计数,而不是基于真值或假值。以下是解决硬币问题的方法...

    在此示例中包含 script2 的 GameObject 在 Find("") 中是必需的。我们将使用“GamNme”作为示例。

      //script1
      public script2name Var;
      void start()
      {
      Var = GameObject.Find("GamNme").GetComponent<script2name>();
      }
      void func()
      {
       //picks up coin
       Var.count = 1;
      }
    
      //script2
      public int count = 0;
      void func()
      {
       if (count == 1)
       {
        //instantiate new coin and reset the counter
       count = 0;
        }
       }
    

    【讨论】:

    • 实际上,当从另一个类访问整数、布尔值或任何其他类型时,它们没有区别。相反,你必须找到那些变量“生活”的对象,在你的情况下是script2Name-component。
    • 无论如何你应该给你的类起有意义的名字。 ScriptScript2Name(还要注意类应该命名为 PascalCase)是可怕的名称,因为它们不包含有关该类实际作用的任何信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多