티스토리 뷰

유니티용입니다. 
싱글톤을 사용해서 접근할 수 있게 했습니다.

단 하나의 게임오브젝트에 컴퍼넌트로 올려놓으시고 

TimerManager.Instance.StartTimer(초수, 액션);

으로 사용하시면 됩니다.

퍼포먼스 테스트를 조금 진행해봤는데,
사용 상에 문제가 되지는 않은 것으로 보입니다.

모바일 기기 테스트를 해본 것은 아니니까...
혹시 사용해 보시고 개선이 필요한 걸 느끼시면 알려주세요.

근데 유니티는 왜 타이머를 안 만들까요
게임에서 시간체크 하는 게 얼마나 많은데;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class TimerManager : MonoBehaviour
{
    public static TimerManager Instance;
    List<Timer> timers = new List<Timer>();
    private void Awake()
    {
        if(Instance == null)
        {
            DontDestroyOnLoad(this);
            Instance = this;
        }
    }
    private void Update()
    {
        for(int i= timers.Count -1; i >= 0; i--)
        {
            timers[i].restTime -= Time.deltaTime;
            if(timers[i].restTime <= 0)
            {
                timers[i].OnTime();
                timers.RemoveAt(i);
            }
        }
    }
    public void StartTimer(float time, System.Action OnTime)
    {
        timers.Add(new Timer(time, OnTime));
    }
}
public class Timer
{
    public System.Action OnTime;
    public float restTime;
    public Timer(float restTime, System.Action OnTime)
    {
        this.restTime = restTime;
        this.OnTime = OnTime;
    }
}
cs


TimerManager.cs


댓글
최근에 올라온 글
Total
Today
Yesterday
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31