помогите реализовать логику генерации монеток.
В целом код работает, только выдает ошибку Null Reference
из-за того, что монетка не создана, а я пытаюсь к ней обратиться в самом нижнем условии. Не могу придумать, как правильно реализовать это, чтобы не выдавало ошибку. Монетка создается один раз в пять "итераций".
void Update()
{
if (spawnItems.Iteration % 5 == 0 && spawnItems.Iteration != 0 && canInst)
{
InstCoin = Instantiate(Coin, coinStartPos, Quaternion.identity) as GameObject;
isSpawned = true;
}
if (spawnItems.Iteration % 5 != 0)
{
Destroy(InstCoin, 0.01f);
isSpawned = false;
canInst = true;
}
if (InstCoin.transform.position == coinStartPos)
canInst = false;
CoinMove();
}
public class CoinSpawner : MonoBehaviour {
[SerializeField] private GameObject _coinPrefab;
[SerializeField] private float _spawnStep = 2f;
[SerializeField] private float _destroyDelay = 3f;
private List<Transform> _coins;
private Transform _transform;
private IEnumerator _spawnCoroutine;
public void StartSpawn () {
if (_spawnCoroutine == null) {
_spawnCoroutine = CoinSpawnCoroutine(_spawnStep);
StartCoroutine(_spawnCoroutine);
}
}
public void StopSpawn () {
StopCoroutine(_spawnCoroutine);
_spawnCoroutine = null;
}
private void Start () {
_transform = transform;
_coins = new List<Transform>();
StartSpawn();
}
private void Update () {
Move();
}
private void SpawnCoin () {
if (_coinPrefab != null) {
GameObject NewCoin = Instantiate(_coinPrefab, _transform.position, Quaternion.identity);
Transform CoinTransform = NewCoin.transform;
_coins.Add(CoinTransform);
StartCoroutine(DestroyDelayCoroutine(_destroyDelay, CoinTransform));
}
}
private void RemoveCoin (Transform target) {
if (target != null) {
_coins.Remove(target);
Destroy(target.gameObject);
}
}
private void Move () {
foreach (Transform coin in _coins)
coin.localPosition += Vector3.up*Time.deltaTime;
}
private IEnumerator SpawnCoroutine(float step) {
float Timer = 0;
while (true) {
yield return null;
Timer += Time.deltaTime;
if (Time >= step) {
Time -= step;
SpawnCoin();
}
}
}
private IEnumerator DestroyDelayCoroutine (float delay, Transform target) {
yield return new WaitForSeconds(delay);
RemoveCoin(target);
}
}
Вы монетку создаете каждый пятый кадр, а проверяете ее каждый кадр. То есть 4 кадра из 5 переменная InstCoin будет равна null. А у null нельзя получить ни transform, ни позицию. Ничего
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Задача с юлёрна https://ulearnme/course/basicprogramming/Praktika_Parser_predlozheniy__d41a27ad-a377-4fbd-ba1c-1bd761c69dd1
Доброе время суток, Взял хостинг goodhostkz, добавил проект и импортировал БД, но не как не могу настроить строку подключение
Не лишняя ли здесь проверка enum параметра? (UserRole - enum-объект)И вообще нужна ли проверка на enum типы во входных параметрах?! Спасибо за внимание!