У меня есть два метода, почти одинаковые в теле, но разные в обратном типе. Один из них - IEnumerator, а другой - недействительный. Есть ли какой-либо умный способ написания кода, чтобы мне пришлось писать меньше строк кода.Те же методы с разными типами возврата
IEnumerator CreatePath(int val)
{
if (val < worlds.Length - 1) {
int totalChild = CountChildren (Path [val].transform);
MeshRenderer[] child = Path [val].transform.GetComponentsInChildren<MeshRenderer>();
for (int i = 0; i < totalChild; i++) {
yield return new WaitForSeconds (0.2f);
child [i].enabled = true;
}
}
}
И
void CreatePath_(int val)
{
if (val < worlds.Length - 1) {
int totalChild = CountChildren (Path [val].transform);
MeshRenderer[] child = Path [val].transform.GetComponentsInChildren<MeshRenderer>();
for (int i = 0; i < totalChild; i++) {
child [i].enabled = true;
}
}
}
И весь сценарий
public GameObject[] worlds,Path;
public int ClearedWorldValue = -1;
private int posArray;
void Start()
{
SetMapState();
}
void SetMapState()
{
for (int i = 0; i < 3; i++) {
ChangeColor (i,0);
}
}
void ChangeColor(int val,float pause){
if (val!=-1) {
worlds [val].transform.GetChild (0).GetComponent<SpriteRenderer>().enabled = false;
worlds [val].transform.GetChild (1).GetComponent<SpriteRenderer>().enabled = true;
StartCoroutine (CreatePath (val, pause));
ChangeColortoRed (val);
}
}
void ChangeColortoRed(int val)
{
if (val < worlds.Length-1) {
worlds [val + 1].transform.GetChild (0).GetComponent<SpriteRenderer>().enabled = true;
}
}
IEnumerator CreatePath(int val,float pause)
{
if (val < worlds.Length - 1) {
int totalChild = CountChildren (Path [val].transform);
MeshRenderer[] child = Path [val].transform.GetComponentsInChildren<MeshRenderer>();
for (int i = 0; i < totalChild; i++) {
yield return new WaitForSeconds (pause);
child [i].enabled = true;
}
}
}
int CountChildren(Transform a)
{
int childCount = 0;
foreach (Transform b in a)
{
childCount ++;
childCount += CountChildren (b);
}
return childCount;
}
void Update()
{
ChangeColor (ClearedWorldValue,0.2f);
}
В чем разница между этими двумя методами рядом с типом возврата? – Valentin
как void возвращает тип? – Haris
Попробуйте отправить немного более подробную информацию и соответствующую часть вашего кода, если это возможно. – Angelo