Как исправить ошибку ObjectPoolingManager.GetBullet C# unity
[
Assets\Project\Scripts\Utils\ObjectPoolingManager.cs(35,23): error CS0161: 'ObjectPoolingManager.GetBullet()': not all code paths return a value
Сам код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectPoolingManager : MonoBehaviour
{
private static ObjectPoolingManager instance;
public static ObjectPoolingManager Instance { get { return instance ; } }
public GameObject bulletPrefab;
public int bulletAmount = 20;
private List<GameObject> bullets;
void Awake ()
{
instance = this;
bullets = new List<GameObject>(bulletAmount);
for ( int i = 0; i < bulletAmount; i++){
GameObject prefabInstance = Instantiate (bulletPrefab);
prefabInstance.transform.SetParent (transform);
prefabInstance.SetActive (false);
bullets.Add (prefabInstance);
}
}
public GameObject GetBullet () {
foreach (GameObject bullet in bullets){
if (!bullet.activeInHierarchy) {
bullet.SetActive (true);
return bullet;
}
}
GameObject prefabInstance = Instantiate (bulletPrefab);
prefabInstance.transform.SetParent (transform);
bullets.Add (prefabInstance);
}
}
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Нужно чтобы метод GetBullet возвращал GameObject. Сейчас, если if не сработает, то метод ничего не вернёт. Во всяком случае анализатор не может знать наверняка, что оттуда будет 100% что-то возвращаться. Поэтому либо надо код переписать по-другому, либо в конце тоже что-то возвращать по-умлочанию