디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

코루틴이랑 TASK를 씬단위 매니저로 관리하는게 좋을까

ㅆㅇㅆ(124.216) 2024.09.24 18:17:12
조회 29 추천 0 댓글 0

근데 그럼 싱글톤인데, 싱글톤 관리가 나을까

아니면 방금 만들어서 컴포넌트 엔터티 단위로 부착시켜서 관리할까


싱글톤은 만들기 편하긴한데 손댈때마다, 나중에 테스트가 버거워져서 만들기 꺼려짐


그리고 Task면 다른쓰레드서 접근 못하게 락 걸어야하는데, 생각보다 이것도 까다롭고


짜증




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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
 
public enum CoroutinePriority
{
    Low = 1,//Idle
    Medium = 2,//움직임
    High = 3,//상태이상
    Critical = 4//넉백
}
 
public class EntityCoroutineBuilder : MonoBehaviour
{
    // 각 우선순위별로 여러 코루틴을 관리하기 위해 List<Coroutine> 사용
    private Dictionary<CoroutinePriority, List<Coroutine>> activeCoroutines = new Dictionary<CoroutinePriority, List<Coroutine>>();
 
    /// <summary>
    /// 코루틴을 시작. 우선순위에 따라 기존 코루틴을 중지할지 결정
    /// </summary>
    /// <param name="priority">코루틴의 우선순위</param>
    /// <param name="routine">실행할 코루틴</param>
    public void StartCoroutineWithPriority(CoroutinePriority priority, IEnumerator routine)
    {
        // 우선순위에 따라 기존 코루틴 중지
        List<CoroutinePriority> existingPriorities = new List<CoroutinePriority>(activeCoroutines.Keys);
        foreach (CoroutinePriority existingPriority in existingPriorities)
        {
            if (existingPriority >= priority)
            {
                if (activeCoroutines.TryGetValue(existingPriority, out List<Coroutine> coroutines))
                {
                    foreach (Coroutine coroutine in coroutines)
                    {
                        StopCoroutine(coroutine);
                    }
                    activeCoroutines.Remove(existingPriority);
                }
            }
        }
 
        // 새로운 코루틴 시작
        Coroutine coroutineInstance = StartCoroutine(RoutineWrapper(priority, routine));
 
        // 코루틴을 우선순위에 맞게 리스트에 추가
        if (!activeCoroutines.ContainsKey(priority))
        {
            activeCoroutines[priority] = new List<Coroutine>();
        }
        activeCoroutines[priority].Add(coroutineInstance);
    }
 
    /// <summary>
    /// 코루틴을 중지
    /// </summary>
    /// <param name="priority">코루틴의 우선순위</param>
    public void StopCoroutineByPriority(CoroutinePriority priority)
    {
        if (activeCoroutines.ContainsKey(priority))
        {
            foreach (Coroutine coroutine in activeCoroutines[priority])
            {
                StopCoroutine(coroutine);
            }
            activeCoroutines.Remove(priority);
        }
    }
 
    /// <summary>
    /// 코루틴의 실행을 래핑하여 종료 시 우선순위를 초기화
    /// </summary>
    /// <param name="priority">코루틴의 우선순위</param>
    /// <param name="routine">실행할 코루틴</param>
    /// <returns>IEnumerator</returns>
    private IEnumerator RoutineWrapper(CoroutinePriority priority, IEnumerator routine)
    {
        yield return StartCoroutine(routine);
        if (activeCoroutines.ContainsKey(priority))
        {
            activeCoroutines[priority].RemoveAll(c => c == null);
            if (activeCoroutines[priority].Count == 0)
            {
                activeCoroutines.Remove(priority);
            }
        }
    }
 
    /// <summary>
    /// 특정 우선순위의 코루틴이 실행 중인지 확인
    /// </summary>
    /// <param name="priority">코루틴의 우선순위</param>
    /// <returns>실행 중이면 true, 아니면 false</returns>
    public bool IsCoroutineRunning(CoroutinePriority priority)
    {
        return activeCoroutines.ContainsKey(priority) && activeCoroutines[priority].Count > 0;
    }
}
 
cs


추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 논란보다 더 욕 많이 먹어서 억울할 것 같은 스타는? 운영자 24/09/23 - -
이슈 [디시人터뷰] '더 인플루언서' 표은지, 귀여움과 섹시함을 겸비한 모델 운영자 24/09/26 - -
2754038 C# 코루틴은 try Catch 못씀? [8] ㅆㅇㅆ(124.216) 09.24 71 0
2754035 세금을 조금이라도 줄여보고자 soxl 손실을 그대로 떠안았습니다 [2] 쇼요롤갤로그로 이동합니다. 09.24 39 0
2754034 나는조현병이야 나는내향적이야 [2] 손발이시립디다갤로그로 이동합니다. 09.24 40 0
2754033 알고리즘을 공부하면 훌륭한 쿠돌이가 될 수 있음. 프갤러(14.39) 09.24 35 0
2754032 Installing Linux on a PlayStation 2! [1] 발명도둑잡기갤로그로 이동합니다. 09.24 30 0
2754029 Installing Mac OS on the Nintendo Wii! 발명도둑잡기갤로그로 이동합니다. 09.24 22 0
2754028 주식이 올라도 문제시다 [6] 쇼요롤갤로그로 이동합니다. 09.24 51 0
2754026 월급 입갤 [2] 쇼요롤갤로그로 이동합니다. 09.24 59 1
2754025 알고리즘 공부 어떻게 함? [3] 프갤러(106.241) 09.24 54 0
2754023 취업 준비 40 년 인생 갈아 넣었습니다. 프갤러(59.16) 09.24 43 0
2754022 애플 뉴톤 메쎄지패드 발명도둑잡기갤로그로 이동합니다. 09.24 24 0
2754021 나님 질문 받아요 쇼요롤갤로그로 이동합니다. 09.24 19 0
2754020 Apple's Failed Touchscreen Laptop From 1 발명도둑잡기갤로그로 이동합니다. 09.24 21 0
2754018 시발 나머지 퇴직금 언제 줄 생각이냐고 프갤러(211.234) 09.24 23 0
2754017 침착놈씨 정승제편 재밋네 [8] 헬마스터갤로그로 이동합니다. 09.24 70 0
2754016 이론적인 틀은 조금씩 잡혀 가는데.. 프갤러(14.39) 09.24 40 0
2754015 조장혁-Love Song 명랑소녀 성공기 OST 발명도둑잡기갤로그로 이동합니다. 09.24 20 0
2754011 최정윤, 미국 유학 도중 새 남자 생겼다…남편에게 이혼 요구 발명도둑잡기갤로그로 이동합니다. 09.24 30 0
2754010 하 씨발 고졸국비새끼 죽여버리고 싶다 [2] ㅇㅇ(124.60) 09.24 157 1
2754009 검찰 또 “이재명 공산당” 타령에···재판부 “듣기 어렵다” 발명도둑잡기갤로그로 이동합니다. 09.24 26 0
2754007 날 써줄 회사는 있을까 [2] 쇼팬하우어갤로그로 이동합니다. 09.24 55 0
2754005 도리스아 프갤에 입장했습니다. [2] 도리스아(14.35) 09.24 38 0
2754002 영월 터널 역주행 참변 해병대 영상 발명도둑잡기갤로그로 이동합니다. 09.24 28 0
2753996 좇소연봉20원 공무원 연봉 3%인상 왜 공무원 안하냐 ㅋㅋㅋ [2] 뒷통수한방(1.213) 09.24 40 0
2753995 오늘은 그냥 게임이나 개발군주(58.236) 09.24 23 0
2753994 와이프 임신한듯 hrin(118.235) 09.24 64 0
2753992 신입개발자 취준 더 지옥되겠네 [2] AED갤로그로 이동합니다. 09.24 311 2
2753989 코드를 어떻게 짜야할까 아직도 모르겠다 [1] ㅆㅇㅆ(124.216) 09.24 52 0
2753987 샤딩이란 말 쓰는 사람은 뭔가 틀딱 같음 [3] ㅇㅇ(223.38) 09.24 63 0
2753985 코로나이후에도 줄서기 아르바이트 하는 사람들 있음? 프갤러(103.5) 09.24 34 0
2753983 금일 프비지원을 시작합니다. 개발군주(58.236) 09.24 13 0
2753982 넥사크로좆같은점 프갤러(118.235) 09.24 44 0
코루틴이랑 TASK를 씬단위 매니저로 관리하는게 좋을까 ㅆㅇㅆ(124.216) 09.24 29 0
2753980 취업포기 해야되나.. ㅇㅇ(112.161) 09.24 100 1
2753979 VPN is Useless Against These Kinds of In 발명도둑잡기갤로그로 이동합니다. 09.24 27 0
2753978 엄마 갱년기 왔는지 ㅈㄴ예민해져서 설거지 매일 하는중;; ㅇㅇ(123.213) 09.24 27 0
2753977 병원 전산 면접보러감 [5] 프갤러(125.177) 09.24 133 1
2753976 How to Disappear: Advanced Tech Techniqu 발명도둑잡기갤로그로 이동합니다. 09.24 24 0
2753975 리눅스폰, 감시당하는 안드로이드폰, 구글없앤 안드로이드 발명도둑잡기갤로그로 이동합니다. 09.24 38 0
2753974 열심히 노력해서 연봉올린거 다 나라에 받쳐라 니들운명이다 뒷통수한방(1.213) 09.24 34 0
2753973 진상손님과 기센알바생이 만나면 생기는일 발명도둑잡기갤로그로 이동합니다. 09.24 22 0
2753972 와씨잘 탄수화뭉중독 존나쌔네 고기존나먹어도 이게 뭐가안되너 Snob갤로그로 이동합니다. 09.24 32 0
2753971 Installing Desktop Linux on a Game Boy A [1] 발명도둑잡기갤로그로 이동합니다. 09.24 20 0
2753970 TMAX A&C 급여 중단 ㄷㄷ [2] 초코냥갤로그로 이동합니다. 09.24 143 0
2753969 Why Are Open Source Alternatives So Bad? 발명도둑잡기갤로그로 이동합니다. 09.24 23 0
2753968 공부 여유롭게 꾸준히 해도 됨?? 막 머리싸매고 뒤질것 같이 안해도 되나 [3] ㅇㅇ(123.213) 09.24 48 0
2753967 사 먹는 ‘배추김치’ 요즘 죄다 품절인 이유가 있었다 발명도둑잡기갤로그로 이동합니다. 09.24 31 0
2753966 여자들의 이상형이래 [2] 딘퐁갤로그로 이동합니다. 09.24 112 1
2753965 아이스크림 먹어야징 주아갤로그로 이동합니다. 09.24 26 0
2753964 I Made The Ultimate Cheating Device 발명도둑잡기갤로그로 이동합니다. 09.24 22 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2