我的目标是编写一个脚本,我可以在不同的游戏对象上使用它,并且它应该只在该游戏对象上绑定特定的变量,而不影响过程中的其他脚本。
例如,如果我把这个脚本放在两个游戏对象上,每个游戏对象在同一个脚本中应该有自己唯一的变量值。
如果我的问题不够清楚,我很乐意进一步阐述。
我对 Unity 编辑器有很好的理解,但是,我对 C# 还很陌生,所以我认为我在代码的某个地方犯了一个菜鸟错误并不是不合理的。
我设置东西的方式是我有两个单独的脚本:
Fighting
控制像Team
, Health
, Attack Damage
, Cool Down
,Cooling down
和Snap
TrigDetect
控制对因敌人进入触发范围而激活的触发器的检测。
我目前遇到的问题在于TrigDetect
我猜的脚本。
还应注意,附加到每个相关游戏对象的空文件包含这两个脚本并标记为“部队”。
触发检测
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TrigDetect : MonoBehaviour
{
//public GameObject[] Enemy;
bool once = false;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Troop"))
{
//Debug.Log("Entered");
}
}
void OnTriggerExit(Collider other)
{
if (other.CompareTag("Troop"))
{
//Debug.Log("Exitted");
}
}
void OnTriggerStay(Collider other)
{
if (other.CompareTag("Troop"))
{
Fighting self = GetComponent<Fighting>();
GameObject g = GameObject.Find("Detection");
Fighting fScript = g.GetComponent<Fighting>();
//Enemy = GameObject.FindGameObjectsWithTag("Troop");
//Debug.Log("Staying");
//Debug.Log(Enemy);
//Debug.Log(self.Health);
//Debug.Log(fScript.Health);
if (once == false)
{
Debug.Log("I am the team:" + self.Team);
Debug.Log("I have detected the team:" + fScript.Team);
once = true;
}
if (self.Team != fScript.Team)
{
if (self.CoolingDown == false)
{
self.CoolingDown = true;
fScript.Health -= self.AttackDamage;
}
冉冉说
呼唤远方
相关分类