Files
Fishing2/Assets/Obvious/Soap/Examples/Content/Scripts/PlayersNotifier.cs
2026-01-01 23:09:08 +08:00

50 lines
1.4 KiB
C#

using UnityEngine;
namespace Obvious.Soap.Example
{
[HelpURL("https://obvious-game.gitbook.io/soap/scene-documentation/3_scriptablelists/iteration")]
public class PlayersNotifier : MonoBehaviour
{
[SerializeField] private ScriptableListPlayer scriptableListPlayer = null;
[SerializeField] private IterationType _iterationType = IterationType.IEnumerable;
private float _delay = 1.5f;
private float _timer = 0f;
private enum IterationType
{
IEnumerable,
Foreach,
Index
}
private void Update()
{
_timer += Time.deltaTime;
if (_timer >= _delay)
{
NotifyPlayers();
_timer = 0;
}
}
private void NotifyPlayers()
{
switch (_iterationType)
{
case IterationType.IEnumerable:
foreach (var player in scriptableListPlayer)
player.Notify();
break;
case IterationType.Foreach:
scriptableListPlayer.ForEach(player => player.Notify());
break;
case IterationType.Index:
for (int i = scriptableListPlayer.Count - 1; i >= 0; i--)
scriptableListPlayer[i].Notify();
break;
}
}
}
}