본문 바로가기

유니티(Unity)

(42)
unity firebase crash발생 auth사용 중 crash가 발생했다. auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWithOnMainThread(task => { if (task.IsCanceled) { Debug.LogError("로그인이 취소되었습니다."); UITextController.currentState = 12;//100은 에러 타입 return; } if (task.IsFaulted) { Debug.LogError("로그인 중 오류가 발생했습니다: " + task.Exception); UITextController.currentState = 11; return; } if (task.IsCompletedSuccessfully)// 로그인 성공 { Debug..
비동기 함수 사용시 UI업데이트 비동기 함수에서는 UI업데이트가 안된다. 다른 스레드에서 작동되기 때문이다.(Unity는 일반적으로 메인스레드만 사용한다.) private IEnumerator UpdateState() { WaitForSeconds delay = new WaitForSeconds(1.5f); while (true) { if (notifyType == 1)//계정 생성 성공 { notifyText.text = "Create account success"; notifyType = 0; Invoke("ClearNotifyText", 5f); } else if (notifyType == 10)//로그인 성공 { notifyText.text = "Log in success"; notifyType = 0; Invoke("Clear..
Firebase Storage MetaShop
MetaShopEditor
비동기 예시 using UnityEngine; using System.Threading.Tasks; public class TaskTest : MonoBehaviour { void Start() { Test(); } public async Task FetchDataAsync() { // 비동기 작업 시뮬레이션을 위해 1초 대기 await Task.Delay(5000); // 비동기 작업 결과 반환 return "데이터 결과"; } private void Test() { PerformAsyncOperation(); } public async void PerformAsyncOperation() { A(); B(); C(); // 비동기 함수 호출 string result = await FetchDataAsync(); D..
웹소켓,TCP,패킷 -웹소켓 웹소켓은 TCP 기반의 양방향 통신 프로토콜로, 서버와 클라이언트 간의 실시간 양방향 통신을 제공합니다. HTTP와 마찬가지로 웹 브라우저에서 사용되며, 웹소켓 연결을 위한 별도의 포트 번호(일반적으로 80 또는 443)를 사용합니다. 웹소켓은 다음과 같은 특징을 가지고 있습니다. 웹소켓은 상태유지(Stateful) 프로토콜입니다. 클라이언트와 서버 간의 연결을 유지하면서 양방향 통신을 수행할 수 있습니다. 따라서 HTTP와 달리 클라이언트와 서버 간의 상태 정보를 유지하고, 언제든지 통신을 시작하거나 중지할 수 있습니다. 웹소켓은 텍스트와 이진 데이터를 모두 전송할 수 있습니다. HTTP와 달리, 웹소켓은 텍스트와 이진 데이터를 모두 전송할 수 있습니다. 이를 통해 클라이언트와 서버 간의 다양..
클래스, 객체, 인스턴스 클래스(Class)는 객체(Object)를 만들기 위한 일종의 설계도입니다. 즉, 클래스는 객체를 만들기 위한 필드(속성)와 메서드(기능) 등의 특성을 정의하고, 이를 바탕으로 객체를 생성할 수 있도록 합니다. 객체(Object)는 이러한 클래스를 기반으로 실제로 만들어진 것으로, 메모리상에 할당된 실체를 의미합니다. 객체는 클래스를 통해 만들어지는 실체로, 여러 개의 객체를 만들 수 있습니다. 인스턴스(Instance)는 객체를 생성한 후, 이를 사용할 수 있도록 메모리에 할당한 상태를 의미합니다. 즉, 클래스를 기반으로 만들어진 객체가 실제로 메모리에 할당되어 사용 가능한 상태가 되었다면, 이를 해당 클래스의 인스턴스라고 합니다. 간단하게 예를 들면, 붕어빵틀은 클래스이고, 붕어빵은 객체입니다. 이후..
프로그램 패러다임 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체라는 개별적인 단위로 분해하고, 이 객체들 간의 상호작용을 통해 프로그램을 구현하는 프로그래밍 패러다임입니다. 쉽게 예를 들자면, 슈퍼마켓에서 물건을 살 때, 물건의 이름, 가격, 수량 등의 정보를 담고 있는 제품 카트를 생각해볼 수 있습니다. 이 카트는 제품의 정보를 캡슐화하고 있으며, 제품 카트는 구매자가 물건을 추가하거나 제거하거나 결제할 수 있는 메서드를 가지고 있습니다. 객체 지향 프로그래밍에서는 이러한 객체를 모델링하고, 객체 간의 관계를 나타내는 클래스를 정의합니다. 이렇게 객체를 모델링하면, 코드의 가독성, 재사용성, 유지보수성이 향상되며, 프로그램의 확장성도 좋아집니다. 예를 들어, 슈퍼마켓..
단일 책임원칙(Single-responsibility principle) 단일 책임원칙(Single-responsibility principle)은 객체 지향 프로그래밍에서 중요한 디자인 원칙 중 하나입니다. 이 원칙은 하나의 클래스는 하나의 책임(Responsibility)만을 가져야 한다는 것을 의미합니다. 클래스는 하나의 책임만을 가지며, 그 책임을 완전히 수행해야 합니다. 이를테면, 게임에서 플레이어(Player) 클래스는 게임 내에서 플레이어와 관련된 기능만을 담당해야 하며, 다른 역할을 수행하지 않아야 합니다. 예를 들어, 플레이어 클래스가 게임 내 오디오(Audio) 관련 기능까지 담당한다면, 이는 단일 책임 원칙을 위반하는 것입니다. 이 경우, Audio 클래스를 만들어서 플레이어 클래스에서 Audio 클래스를 사용하도록 분리하는 것이 좋습니다. 이러한 원칙을 ..
어트리뷰트(Attribute) 어트리뷰트(Attribute)는 코드에 메타데이터를 추가하는 방법입니다. 메타데이터란, 프로그램의 구조, 컴포넌트, 함수 등과 같은 정보를 뜻합니다. 어트리뷰트는 이러한 메타데이터를 지정하는 역할을 하며, 이 정보를 기반으로 컴파일러나 런타임 시스템에서 특별한 작업을 수행할 수 있습니다. 예를 들어, [Serializable] 어트리뷰트는 C#에서 사용되며, 클래스나 구조체가 직렬화(Serialization) 가능한 형태로 변환되도록 합니다. 직렬화란, 객체의 상태를 저장하거나 전송하기 위해 객체를 바이트 스트림 형태로 변환하는 것을 말합니다. [RequireComponent] 어트리뷰트는 Unity에서 사용되며, MonoBehaviour 클래스를 상속하는 스크립트의 경우 해당 스크립트가 사용될 때 필요..