728x90
만들다보면 꼭 몇 초에 한번 뭐를 체크해야
하거나 그럴 때가 있다 -_- 쉽게는 Invoke 나
Coroutine 쓰면 되지만 이런 애들은 관리가
필요하고 관리하고 싶지 않은데 관리해야 된
다면- 대략 제작 해보자면
using System;
using System.Collections.Generic;
public class ActionPerSecData
{
public delegate void Action();
public float m_Sec { private set; get; }
public float m_CurSec = 0.0f;
public Delegate m_Action;
public ActionPerSecData(float sec, Delegate action)
{
m_Sec = sec;
m_CurSec = 0.0f;
m_Action = action;
}
}
public class ActionPerSec
{
protected List<ActionPerSecData> m_List = new List<ActionPerSecData>();
// Update is called once per frame
public void Update(float deltaTime)
{
foreach (var tmp in m_List)
{
tmp.m_CurSec += deltaTime;
if (tmp.m_CurSec > tmp.m_Sec)
{
tmp.m_CurSec = 0.0f;
((Action)tmp.m_Action)();
}
}
}
public void Add(float sec, Action action)
{
m_List.Add(new ActionPerSecData(sec, action));
}
}
이렇게 만들어서 원하는 곳에 붙여서 쓰면 된다..
protected ActionPerSec m_ActionPerSec = new ActionPerSec();
void Start()
{
m_ActionPerSec.Add(1.0f, () => HpRegen());
}
protected void Update()
{
m_ActionPerSec.Update(time.deltaTime);
}
virtual protected void HpRegen()
{
// to do
}
728x90
'프로그래밍 > Unity' 카테고리의 다른 글
스크롤 뷰 (Scroll View) 만들기 (0) | 2021.12.27 |
---|---|
Unity - Anti-Cheat Toolkit 메뉴얼 (2) | 2021.12.20 |
Unity 어드레서블 통빌드(풀빌드) 시 주의 (0) | 2021.10.28 |
Unity 일정 시간 동안 목표 위치까지 이동 (0) | 2021.10.05 |
txt 파일 생성 (0) | 2021.09.09 |
댓글