我正在使用脚本根据名称为gameObject提供输入。
public KeyCode cavalryCall;
GameObject CohortA;
GameObject CohortB;
GameObject CohortC;
GameObject CohortD;
//List of configurations
void Start () {
CohortA = GameObject.Find ("Cohort A");
CohortB = GameObject.Find ("Cohort B");
CohortC = GameObject.Find ("Cohort C");
CohortD = GameObject.Find ("Cohort D");
//A Input
if (gameObject == CohortA) {
cavalryCall = KeyCode.Alpha4;
}
//B Input
if (gameObject == CohortB) {
cavalryCall = KeyCode.R;
}
//C Input
if (gameObject == CohortC) {
cavalryCall = KeyCode.F;
}
//D Input
if (gameObject == CohortD) {
cavalryCall = KeyCode.V;
}
}
然后我使用该输入为不同的输入启动多个协同程序,其中一个用于实例化另一个gameObject,然后更改该新对象的图层。
KeyInput scriptBeholderKI;
//Script adquisition
void Start () {
scriptKI = gameObject.GetComponent <KeyInput> ();
}
void Update () {
//Key inputs
if (Input.GetKeyDown (scriptKI.cavalryCall)) {
StopAllCoroutines ();
StartCoroutine (CavalryCall (0));
}
}
IEnumerator CavalryCall (float Cavalrycall) {
Instantiate (CavalryCohort, CavalryCohortSpawn.transform.position, CavalryCohortSpawn.transform.rotation);
CavalryCohort.layer = CavalryCohortSpawn.layer;
yield return null;
}
}
问题是所得到的层变得混乱,我有4层:
- 第一层用于“ CavalryCohortSpawn ”这是“ CohortA ”的孩子,当我按下“ Alpha 4 < / strong>“,它在第D层中产生。
- B层为“ CavalryCohortSpawn ”这是“同类B ”的孩子,当我按“ R “,它在第C层中产生。
- C层表示“ CavalryCohortSpawn ”这是“ CohortC ”的孩子,当我按“ F “,它在 B层中产生。
- 图层D 为“ CavalryCohortSpawn ”这是“同类群组”的孩子,当我按“ V “,它在第A层中产生。
我只发布了相关的片段,第一个脚本中有更多的输入变量,第二个脚本中有更多的协程可以完美地工作。 此外,如果有人知道更好的方式来更改图层我会很感激:)