디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2024.09.24 18:17:12
조회 41 추천 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/11/11 - -
2772478 세 번 연거푸 이대에 공연 보러 왔다 발명도둑잡기갤로그로 이동합니다. 11.11 22 0
2772472 학교 키보드 칠때마다 너무 무거워서 슬퍼짐 [1] 공기역학갤로그로 이동합니다. 11.11 58 0
2772470 코딩 못하겠음 cursor.ai 써봐 ㅇㅇ갤로그로 이동합니다. 11.11 77 0
2772468 이번 주말은 꼭 쉴 거임 [4] 주아갤로그로 이동합니다. 11.11 56 0
2772466 공대생들 공부에 하루 몇시간정도 투자함?? ㅇㅇ(123.213) 11.11 47 0
2772464 우분투 원래 좀 느림? [10] ㅇㅇ갤로그로 이동합니다. 11.11 87 1
2772462 Astrogrep한글판 있음? 프갤러(39.7) 11.11 24 0
2772459 취업 존나 빡세다 프갤러(39.119) 11.11 89 0
2772458 현대인들은 질좋은 수면의 중요성을 잊었다. ㅇㅇ(123.213) 11.11 22 0
2772456 죄명이 빨갱이당애서도 버림 받았노 ㅋㅋ 거짓선동집회에도 사람 좃도안옴 ♥Sub2냥덩♥갤로그로 이동합니다. 11.11 32 0
2772455 국과연에서 프로그래머 되는법 있음? 29살 무직이긴함 Snob갤로그로 이동합니다. 11.11 34 0
2772453 트럼프 자기관리법 도입 여부에 관한 깊은 고민에 휩싸였다. [1] ㅇㅇ(123.213) 11.11 55 0
2772450 이력서에 캡스톤디자인 수상기록 적어도됨?? [2] ㅇㅇ(211.234) 11.11 62 1
2772449 프로그래밍 가장 무서운건 컴파일오류 안나는 오류인듯 [1] ㅇㅇ(61.255) 11.11 56 0
2772447 회사에서 니네 없어도 잘돌아가면 나가줘야하는거 아님..? [3] 프갤러(211.33) 11.11 68 0
2772446 3년차 되니까 코드나 it 단어만 들어도 기분 안좋아짐 [2] ㅇㅇ갤로그로 이동합니다. 11.11 88 1
2772443 예전에 친구 이직할때 들었던 건데 645ㅅㄷ(106.246) 11.11 48 0
2772442 조기 대선 언제 하냐고요. 도리스아 skt(112.170) 11.11 25 0
2772441 나스닥 일부 익절하고 생활비로 전환하셨다 헬마스터갤로그로 이동합니다. 11.11 36 0
2772435 업비트에서 이자도주나보네? 헬마스터갤로그로 이동합니다. 11.11 45 0
2772434 ☀나님 시작합니당☀ ♥Sub2냥덩♥갤로그로 이동합니다. 11.11 25 0
2772433 주어진 코드작업만 하고 싶은데 [1] 프갤러(58.226) 11.11 33 0
2772431 윤석열 적페 공화국 도리스아(223.38) 11.11 37 0
2772430 주식이 자꾸 올라서 걱정인데스 [1] 아스카영원히사랑해갤로그로 이동합니다. 11.11 64 0
2772429 나도 뭘 하는지 왜 하는지 아무것도 모르겠다. ㅇㅇ(123.213) 11.11 29 0
2772428 나쁜말하면 거짓말쟁이 도리스아(223.38) 11.11 18 0
2772427 식비 0원인 회사 흔함? [4] 프갤러(211.234) 11.11 66 0
2772426 자바 스프링 안하면 뭐하는데 [1] 프갤러(119.56) 11.11 51 0
2772425 예전에 회사에서 인텔리 제이 개인 계정 내놓으라고 했다던 갤러다 [1] ㄱㅌ(106.246) 11.11 50 0
2772424 책 첫음절 초성만 해시로 다 정렬했다 발명도둑잡기갤로그로 이동합니다. 11.11 27 0
2772423 다 잃은 기분 도리스아 skt(223.38) 11.11 17 0
2772419 퇴사 통보 3주 전에 했다고 개념 없냐고 한소리 들음 [13] 2dws(106.246) 11.11 115 0
2772417 요즘 전공자들 취업하면 야근생활 거의 당첨임? [3] ㅇㅇ갤로그로 이동합니다. 11.11 106 0
2772416 기업은 돈있는사람에게만 도리스아(223.38) 11.11 29 0
2772415 C++ 입문서 갑은 그냥 윤성우임 [2] ㅇㅇ(119.71) 11.11 82 2
2772412 친구들하고 약속 잡는 서비스 만들어봤다. [12] 프갤러(1.235) 11.11 134 0
2772410 히키새끼 요즘 괜찮으려나?? 프갤러(220.86) 11.11 46 0
2772409 코파일럿 그리기능력 잃었냐? 헬마스터갤로그로 이동합니다. 11.11 41 0
2772407 요즘은 개발자 경쟁률 어떠냐 [3] ㅇㅇ갤로그로 이동합니다. 11.11 134 0
2772404 자바 스프링 안하면 뭐할려고 그래 [2] 프갤러(218.149) 11.11 60 0
2772402 나님 커피 시작합니다. [2] 40대프린이(118.235) 11.11 62 0
2772399 입병 그아아아아아앗 [2] 아스카영원히사랑해갤로그로 이동합니다. 11.11 57 0
2772396 ☀나님 시작합니당☀ ♥Sub2냥덩♥갤로그로 이동합니다. 11.11 26 0
2772395 취미로 홈페이지 만들어보고싶은데 [3] 프갤러(203.247) 11.11 51 0
2772392 C++ primer랑 c++기초 플러스 중에 추천좀.. 프갤러(211.224) 11.11 30 0
2772390 정부 사이트는 어떻게 모든 사이트가 다 불편하지? [6] 헬마스터갤로그로 이동합니다. 11.11 57 0
2772389 진짜 프린트 프린트 엘엔 n도 모르는 폐급이 뭔 알고리즘을 짜고있냐? [6] 텬됴대한의아들갤로그로 이동합니다. 11.11 69 1
2772387 기술이발전할수록 일자리가 사라지는 나라는 좇센ㅋㅋㅋㅋ 뒷통수한방(1.213) 11.11 29 0
2772386 나쁜짓 하면 벌받아야됨 feat 추경호 넥도리아(223.38) 11.11 29 0
2772385 야야~ 민주당 의원이 공평성과 형평성을 언급했다 ㅋㅋㅋㅋㅋ [1] 프갤러(121.172) 11.11 47 1
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2