Posts 유니티 - 하이라키 우클릭 메뉴 아이템
Post
Cancel

유니티 - 하이라키 우클릭 메뉴 아이템

우클릭 MenuItem 메소드 중복 호출 방지하기


  • 게임오브젝트를 다중 선택하고 우클릭 메뉴를 통해 실행했을 때 생기는 중복 호출 버그 방지

  • 다이얼로그를 띄우면 방지 안되니 주의

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
private static string _prevMethodCallInfo = "";

/// <summary> 같은 메소드가 이미 실행됐었는지 검사 (중복 메소드 호출 제한용) </summary>
private static bool IsDuplicatedMethodCall([System.Runtime.CompilerServices.CallerMemberName] string memberName = "")
{
    string info = memberName + DateTime.Now.ToString();

    if (_prevMethodCallInfo.Equals(info))
    {
        return true;
    }
    else
    {
        _prevMethodCallInfo = info;
        return false;
    }
}

[MenuItem("GameObject/Rito/Test", priority = -999)]
private static void TestUsage()
{
    if(IsDuplicatedMethodCall()) return;

    // ...
}


현재 선택된 트랜스폼들을 필터링에 따라 가져오기


1
2
3
4
5
6
7
8
9
// 선택된 트랜스폼들 중에 루트들만, 프리팹 제외하고 가져오기
Selection.transforms;

/// <summary> 현재 선택된 트랜스폼들 중 계층 관계에 있는 것들은 최상위 부모만 필터링하여 가져오기 </summary>
private static Transform[] SelectedTopLevelTransforms => Selection.GetTransforms(SelectionMode.TopLevel);

/// <summary> 현재 선택된 모든 트랜스폼들을 필터링 없이 그대로 가져오기 </summary>
private static Transform[] SelectedAllTransforms
    => Selection.GetTransforms(SelectionMode.Unfiltered);


This post is licensed under CC BY 4.0 by the author.