What other ways can i invoke my Function outside of update and start?
I'm creating a script that manages the players stats, and so far i've created a function that works, but if i call it in update it invokes multiple times, i cant put it in start either because it needs to check every frame for variables. Is there another way to evoke it once? here's my script
public float maxHealth = 100;
public float maxStamina = 100;
public float maxMana = 100;
public float playerHealth = 100;
public float playerStamina = 100;
public float playerMana = 100;
public bool losingStamina;
void Update () {
if (losingStamina == true)
{
CancelInvoke("regenStamina");
}
else if (playerStamina < maxStamina)
{
InvokeRepeating("regenStamina", 3f, 1.0f);
}
}
void regenStamina()
{
//StamRegenDelay -= 1;
playerStamina += 1f;
if (playerStamina >= maxStamina)
{
playerStamina = maxStamina;
}
}
Answer by kbop2000 · Jul 13, 2020 at 09:18 AM
If you want something simpe script,
private System.Action OnceAction { get; set; } = null;
private void Awake()
{
OnceAction = RegenStamina;
}
private void Update()
{
if (OnceAction != null) OnceAction.Invoke();
}
private void RegenStamina()
{
OnceAction = null;
// playerStamina += 1f;
// ...
}
used to Update() function, another way is ..
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Updator : MonoBehaviour
{
public static Updator Get { get; set; } = null;
public static void Start(IEnumerator iterator)
=> Get.list.Add(iterator);
private readonly List<IEnumerator> list = new List<IEnumerator>();
private void Awake()
=> Get = this;
private void Update()
{
for (int i = 0; i < list.Count; ++i)
{
if (!list[i].MoveNext()) list.RemoveAt(i--);
}
}
}
Alternatively, using StartCoroutine() function is good idea ..
Your answer
![](https://koobas.hobune.stream/wayback/20220613003054im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Raycast ignoring InvokeRepeating intervals 0 Answers
Rigidbody fps controller stopped responding after update to unity 5.5 1 Answer
Does who will upload to iOs store has some real problems in 2019, (need to buy new mac) 0 Answers
Why is my transform null in Update? 1 Answer
how can i increese the repete rate in invoke repeting after some time 1 Answer