Unity에서 supabase 데이터베이스를 사용해 보십시오

14092 단어 Unitysupabasetech
Unity에서 Firebase의 교체 화두로 사용한 supabase의 사례를 찾을 수 없기 때문에 메모로 남기고 싶습니다

개발 환경

  • Unity 2020.3.24f1
  • 누겟을 통해서 수파스.


    supabase의 C# 고객은 Nugget을 통해 얻을 수 있기 때문에 NuGetForUnity에 가입합니다
    https://github.com/supabase-community/supabase-csharp
    https://github.com/GlitchEnzo/NuGetForUnity
    NuGetForUnity를 넣은 후 NuGet>Manage NuGet Packages를 supabase로 검색하면 supabase-cshrap이 맨 위에 나타나므로 설치합니다.
    "NuGetでsupabaseを検索する"
    다운로드가 끝난 후 유니티에는 원래 뉴튼소프트가 있었다.제이슨이 수파베이스-csharp에 있는 물건과 부딪히기 때문에 유닛을 삭제합니다.Version Cotrol이 없으면 Package Manager에서 Version Control을 제거하는 것이 더 쉽습니다.자세한 내용은 다음 Qita 기사를 참조하십시오.
    Multiple precompiled assemblies with the same name Newtonsoft.Json.dll included or the current platform. Only one assembly with the same name is allowed per platform.
    https://qiita.com/sakano/items/6fa16af5ceab2617fc0f

    클라이언트 초기화


    supabase 클라이언트 초기화에 사용할 클래스를 만듭니다.이번에는 URL과 Key를 Serialize Field에게 맡기고Client.Initialize()만 맡길 수 있다면 무엇이든 좋습니다.
    public class SupabaseClient : MonoBehaviour
    {
        [SerializeField] private string supabaseUrl;
        [SerializeField] private string supabaseKey;
    
        private async void Awake()
        {
            await Client.Initialize(supabaseUrl, supabaseKey);
        }
    }
    

    모델 클래스 생성


    이번에는 간단한 온라인 랭킹 기능을 실시한다.
    상속BaseModel의 모델 클래스를 생성합니다.클래스Table에 attribute를 추가하고 매개 변수에 표 이름을 추가하며 속성에 각각 Columnattribute를 추가하고 대응하는 열 이름을 매개 변수에 넣습니다.이번 주 키워드PrimaryKey는 DB 쪽에서 자동으로 증가하는 것으로 설정되었기 때문에 클라이언트 쪽에서 생성하지 않기 위해idShouldInsert.
    [Table("scores")]
    public class ScoreModel : BaseModel
    {
        [PrimaryKey("id", false)] public int Id { get; set; }
        [Column("score")] public int Score { get; set; }
        [Column("user_name")] public string UserName { get; set; }
    
    
        public Score ToScore()
        {
            return new Score(UserName, Score);
        }
    
        public static ScoreModel FromScore(Score score)
        {
            return new ScoreModel {UserName = score.UserName, Score = score.Value};
        }
    }
    
    방금 초기화된supabase 클라이언트 호출false을 통해 표를 조작할 수 있습니다.
    public class SupabaseRepository : IScoreRepository
    {
        private readonly Client _supabaseClient;
    
        public SupabaseRepository(Client supabaseClient)
        {
            _supabaseClient = supabaseClient;
        }
    
        public async UniTask InsertScore(Score score)
        {
            var scoreModel = ScoreModel.FromScore(score);
            await _supabaseClient.From<ScoreModel>().Insert(scoreModel);
        }
    
        public async UniTask<List<Score>> FetchTopThirty()
        {
            var response = await _supabaseClient.From<ScoreModel>().Order("score", Constants.Ordering.Descending)
                .Limit(30).Get();
            return response.Models.Select(model => model.ToScore()).ToList();
        }
    }
    
    자세한 내용은 From<ScoreModel>의 공식 문서를 보십시오.
    https://github.com/supabase-community/postgrest-csharp
    https://supabase-community.github.io/postgrest-csharp/api/Postgrest.html

    만들어진 물건



    https://github.com/adoringonion/unity-ranking-supabase

    좋은 웹페이지 즐겨찾기