50 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |