Unity 커스텀 검색 공급자 만들기

이 문서에서는 Unity에서 커스텀 검색 공급자를 만드는 방법에 대해 설명합니다. 검색 공급자는 특정 아이템을 검색하고 결과를 사용자에게 반환하는 기능을 수행합니다.

검색 공급자 개요

검색 공급자는 fetchItems 함수를 사용하여 아이템을 검색하고 결과를 필터링합니다. 이 함수는 다음과 같은 형식을 가집니다:

public delegate IEnumerable<SearchItem> GetItemsHandler(SearchContext context,
                                    List<SearchItem> items,
                                    SearchProvider provider);
  • context: 필요한 검색 컨텍스트 (예: 토큰화된 검색 및 하위 필터).
  • items: 아이템 목록을 채울 리스트 (비동기 API를 사용하지 않는 경우).
  • provider: 검색 공급자 자체.

SearchItem 구조체

SearchItem은 검색 결과의 개별 항목을 정의하는 간단한 구조체입니다. SearchItem에는 다음과 같은 속성들이 있습니다:

public struct SearchItem
{
    public readonly string id; // 아이템의 고유 ID
    public int score; // 검색 결과 정렬에 영향을 주는 점수
    public string label; // 아이템의 표시 이름
    public string description; // 아이템의 설명
    public SearchItemDescriptionFormat descriptionFormat; // 설명의 포맷
    public Texture2D thumbnail; // 썸네일
    public object data; // 사용자 정의 데이터
}

SearchItem 사용 팁

SearchContext.searchText에 따라 필터링할 때는 정적 함수 SearchProvider.MatchSearchGroup을 사용하여 부분 검색을 생성할 수 있습니다.

퍼지 검색 사용하기

아이템에서 퍼지 검색을 사용하려면 FuzzySearch.FuzzyMatch를 적용할 수 있습니다. 예를 들어:

if (FuzzySearch.FuzzyMatch(sq, CleanString(item.label), ref score, matches))
    item.label = RichTextFormatter.FormatSuggestionTitle(item.label, matches);

비동기 검색 API

비동기 검색 API를 사용할 때는 결과를 계산하는 데 시간이 오래 걸리거나 비동기 검색 엔진을 사용하는 경우에 적합합니다. 이 API를 사용하려면 fetchItems 함수가 IEnumerable<SearchItem>을 반환해야 합니다.

public class AsyncSearchProvider : SearchProvider
{
    public AsyncSearchProvider(string id, string displayName = null)
        : base(id, displayName)
    {
        fetchItems = (context, items, provider) => FetchItems(context, provider);
    }

    private IEnumerable<SearchItem> FetchItems(SearchContext context, SearchProvider provider)
    {
        while(ResultsNotReady())
        {
            yield return null;
        }

        var oneItem = // Get an item
        yield return oneItem;

        var anotherItem = // Get another item
        yield return anotherItem;

        if(SomeConditionThatBreaksTheSearch())
        {
            yield break;
        }

        foreach(var item in someItems)
        {
            yield return item;
        }
    }
}

예제 추가 및 활용

  1. 기본 검색 공급자 구현: SearchProvider를 상속받아 기본적인 검색 기능을 제공하는 검색 공급자를 만들어 봅시다.
  2. 데이터베이스와 통신하기: 외부 데이터베이스에서 검색 데이터를 가져오는 검색 공급자를 구현하십시오.
  3. 직관적인 UI 제공: 검색 결과를 사용자에게 보기 쉽게 표시하기 위한 UI 요소를 구현해 보세요.
구분 설명
검색 공급자 사용자 지정 검색 공급자를 생성할 수 있는 Unity 기능입니다.
SearchItem 검색 결과의 각 항목을 정의하는 구조체입니다.
비동기 API 검색 결과를 비동기적으로 처리할 수 있는 방법입니다.
퍼지 검색 사용자의 입력에 대해 보다 유연한 검색을 할 수 있도록 지원합니다.

이 문서를 통해 Unity에서 커스텀 검색 공급자를 구현하는 방법을 이해하고, 더 복잡한 기능도 쉽게 구현할 수 있기를 바랍니다.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA