Sim*_*mon 3 c# unity-game-engine unityscript
所以我试图通过触摸一个立方体来改变另一个脚本中的变量.当前设置
每个都有自己的脚本Enemy_Stats
&Character_Stats
正如你在这个小片段中看到的那样,从另一个脚本访问变量是一个很好的解决方法.
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Enemy")
{
collision.gameObject.GetComponent<Enemy_Stats>().Health =
collision.gameObject.GetComponent<Enemy_Stats>().Health
- gameObject.GetComponent<Character_Stats>().AttackDamage;
if (collision.gameObject.GetComponent<Enemy_Stats>().Health <= 0)
{
Destroy(collision.gameObject);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我刚接触Unity,但是没有办法用它来引用它:
collision.Health
?
如何从另一个类访问变量/函数.您要访问或调用的变量或函数必须public
不是private
.
public class ScriptA : MonoBehaviour{
public int playerScore = 0;
void Start()
{
}
public void doSomething()
{
}
}
Run Code Online (Sandbox Code Playgroud)
访问变量playerScore
中ScriptA
的ScriptB
.首先,GameObject.Find
使用该GetComponent
函数找到脚本或组件所附加的GameObject,然后使用该函数检索附加到其上的脚本或组件.
public class ScriptB : MonoBehaviour{
ScriptA scriptInstance = null;
void Start()
{
GameObject tempObj = GameObject.Find("NameOfGameObjectScriptAIsAttachedTo");
scriptInstance = tempObj.GetComponent<ScriptA>();
//Access playerScore variable from ScriptA
scriptInstance.playerScore = 5;
//Call doSomething() function from ScriptA
scriptInstance.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3451 次 |
最近记录: |