본문 바로가기
반응형

분류 전체보기505

운영체제 - RaceCondition, Atomic RaceCondition 여러개의 쓰레드들이 공유 변수 동시 접근 시 실행 순서에 따라 결과값이 달라지는 문제 static int number = 0; static void Thread_1() { for (int i = 0; i < 100000; i++) number++; } static void Thread_2() { for (int i = 0; i < 100000; i++) number--; } static void Main(string[] args) { Task t1 = new Task(Thread_1); Task t2 = new Task(Thread_2); t1.Start(); t2.Start(); Task.WaitAll(t1, t2); Console.WriteLine(number); } 현재 n.. 2023. 5. 11.
Unity - 싱글톤(Singleton), Manager 싱글톤(Singleton) 해당 클래스의 인스턴스가 오직 하나만 생성되고 전역 접근을 할 수 있다. 특징 01 유일성 단 한 개의 객체만 존재하고 이는 다른 객체들이 이 인스턴스에 접근할 수 있도록 한다. 02 전역적 Singleton은 어디서든 접근 할 수 있다. 게임 시스템상에서 전역 변수의 역할을 한다. 여러 스크립트나 클래스에서 동일한 객체를 참조해야하는 경우 사용된다. 매니저(Manager) 게임에서 공통적으로 사용되는 기능을 관리한다. 이는 Singleton패턴을 이용하여 구현되므로 전역에서 접근가능한 인스턴스를 갖는다. 사용 이유 01 관리 게임의 여러 기능을 관리하고 조정하여 게임을 원할하게 진행하도록 한다. 예를 들어 오디오 매니저는 오디오를 관리하고, 리소는 매너저는 게임에서 사용되는 .. 2023. 5. 11.
Unity - ScriptableObject ScriptableObject 대량의 데이터를 저장하는데 사용할 수 있는 데이터 컨테이너이다. 게임 오브젝트에 부착할 필요가 없다. 장점 1. MonoBehaviour는 GameObject에 종속되어 있어 GameObject가 파괴될 때 같이 파괴되면서 데이터의 유연성과 재사용성을 제한 할 수 있다. 하지만 ScriptableObject은 데이터 만을 나타내기 때문에 Scene과 GameObject에 무관하다. 2. 인스턴스화를 생성하면서 메모리를 할당하지 않고 Asset으로 저장되면서 단일 인스턴스로 사용 가능하다. 이는 프로젝트 내의 여러 위치에서 참조 될 수 있고 내용이 수정되면 참조 하는 모든 곳에서 동일 하게 반영됨을 의미한다. Unity에서 사용 예시 CreateAssetMenu를 통해서 Sc.. 2023. 5. 10.
C# 문법 - 상속에서 override vs new override override 키워드로 구현하게 되면 자식 클래스의 객체를 부모 클래스의 객체 처럼 사용하더라도 자식 클래스의 함수가 호출된다. class Pig { public virtual void Eat() { Console.WriteLine("먹는다"); } } class PinkPig : Pig { public override void Eat() { Console.WriteLine("분홍돼지가 먹는다"); } } static void Main(string[] args) { Pig pinkPig = new PinkPig(); pinkPig.Eat(); } new new 키워드로 구현하게 되면 기존의 부모와 별개의 함수가 되므로 부모 클래스의 함수가 호출되고 자식 클래스에서는 자식 클래스의 함수를.. 2023. 5. 9.
C# 문법 - enum(열거형) enum C#의 키워드 enum을 열거형(enumeration) 상수(constant)를 나타내는 값형식 이다. 이는 연속된 정수값을 가지며, 각 값은 사용자가 정의한 이름으로 식별된다. 이를 이용하면 상수 숫자들을 보다 의미가 있는 단어들로 표현할 수 있어서 가독성을 높일 수 있다. public enum EnumExample { EnumValue1, // 0 EnumValue2, // 1 EnumValue3, // 2 } enum의 이름 - EnumExample enum의 상수 EnumValue1, EnumValue2,EnumValue3 기본적으로 열거형 멤버의 상수 값은 int형식이다. 즉 0으로 시작하고 정의 텍스트 순서에 따라 1씩 증가한다. Unity에서 사용 예시 public enum Play.. 2023. 5. 9.
Unity - Transform.LookAt() Transform.LookAt() public void LookAt (Transform target, Vector3 worldUp= Vector3.up); 매개변수 target - 현재 Transform이 바라볼 위치 worldUp - Transform의 위쪽 방향을 결정합니다. worldUp가 필요한 이유 worldUp은 시선을 맞출 대상을 바라보는 방향이 아닌, 위쪽 방향을 결정하는 매개변수이다. 예를 들어 카메라의 매개변수로 사용될 경우 카메라가 플레이어와 수직 방향으로 있으면서 원하는 시선 각도를 구할 수 있다. Unity 코드 예시 transform.LookAt(player.position + Vector3.up); 카메라가 플레이어의 위치에 높이만큼 더한 지점을 바라보게 만든다. 플레이어 움직.. 2023. 5. 9.
반응형