본문 바로가기
728x90

분류 전체보기79

Unity, 화면 스크린 캡쳐 스크린 캡쳐 실행 중인 게임에서 스크린샷을 찍을 때 사용되는 코드입니다. 코드 /// /// 스크린샷 저장 /// /// 텍스쳐 생성 콜백 /// private IEnumerator Screenshot(Action onFinished) { yield return new WaitForEndOfFrame(); // 텍스쳐 생성 Texture2D screenTex = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false); // 스크린샷 영역 설정 Rect area = new Rect(0f, 0f, Screen.width, Screen.height); // 현재 화면의 픽셀을 읽어온다. screenTex.ReadPixels(area, 0,.. 2022. 3. 5.
C#, Enum 'Flags' Technic 'Flags' 어트리뷰트 Enum 타입을 이진수로 구성하여 사용할 수 있도록 해줍니다. 이는 하나의 Enum 변수가 여러개의 값을 가질 수 있도록 가능하게 해줍니다. 예제 using System; public class Example { [Flags] private enum eCheck : byte { None = 0, Apple = 1 2022. 2. 28.
Unity, Animator 상태 변환 완료 때까지 기다리기 (확장함수) 애니메이터 사용 중, 애니메이터 상태 변환 완료 이후 시점에 처리가 필요한 경우가 있습니다. 아래의 스크립트를 추가하면, 확장 함수로 편하게 사용 가능합니다. 우리가 필요로 하는 기능 animator.SetTrigger("Die"); 캐릭터가 죽고 나서 보여지는 애니메이션 이후, 해당 상태가 완전히 끝나고 나서 처리가 필요하지만, 이는 유니티에서 지원하지 않습니다. 보통은 AnimationEvent 달아 주어 처리를 하거나, 특정을 직접 입력하여 처리를 합니다. animator.SetTrigger("Die", () => { // 스테이트가 종료된 이후 호출되는 구간 this.gameObject.SetActive(false); }); 위와 같이, 애니메이션 종료 이후 타이밍을 얻게 되며, 추가 적인 처리가.. 2022. 2. 23.
Unity, 코루틴과 멀티쓰레드의 차이 코루틴과 멀티쓰레드 코루틴을 통하여 마치 멀티 쓰레딩을 할 수 있지만, 사실 이는 멀티 쓰레딩과는 거리가 있습니다. 코루틴(Coroutine) 매 프레임마다 스케쥴링으로 관리가 됩니다. 매 프레임에서 IEnumerator의 반복기 형태로 호출되며 체크합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class CoroutineTest : MonoBehaviour { private void Start() { StartCoroutine(DelayedHelloWorld(2f)); // 2초 뒤에 출력 StartCoroutine(DelayedHelloWorld(1f)); // 1초 뒤에 출력 Star.. 2022. 2. 12.
HTTP 통신과 TCP 통신의 차이와 이해 HTTP 통신 HTTP통신은 Question을 물어보면 반드시 Answer이 돌아오는 비연결지향적인 단방향 통신입니다. 언제든 요청을 하면 그에 해당하는 값으로 답을 줍니다. HTTP라는 말에서 보셨듯이, 주로 인터넷 페이지를 예로 들 수 있습니다. 우리는 현재 보고 있는 페이지를 요청해서 받아서 결과로 처리받을 화면을 보고 있으며, 단방향 통신으로 현재는 항시 연결되어 있다고 보지 않습니다. 단순하게 요청에 대한 응답을 받았으면 이미 끝난 것이기 때문입니다. (클라이언트가 요청 -> 서버에서 응답) TCP통신 (socket 통신) TCP통신은 Handshake라는 과정으로 서로가 통신을 할 수 있는 상태를 먼저 인증을 하고 나서 통신을 하는 연결지향적인 양방향 통신입니다. 이는 서로에게 언제든 실시간으.. 2022. 2. 10.
C#, 매개 변수 한정자 out과 ref 기능 및 class 사용 이유 C# 매개 변수 한정자 out과 ref 매개 변수 참조하는 문법 중 하나이며, out과 ref가 따릅니다. out: 매개 변수를 참조하며, 초기화를 요구합니다. 사전에 변수에 초기 값을 요구하지 않습니다. ref: 매개 변수를 참조합니다. 따라서 사전에 명시적인 초기값이 필요합니다. 예제 public class Example { private bool AddCount(ref int count) { if (count < int.MaxValue) { count++; return true; } else return false; } private void Start() { int count = 0; bool isAdded = AddCount(ref count); // resut // count = 1; } } .. 2022. 2. 9.
C#, 쓰레드 동기화를 위한 뮤텍스와 셰마포어 예제 쓰레드 동기화 쓰레드 동기화법 중에서는 대표적으로 아래 두 가지가 있습니다. 뮤텍스(Mutex) 셰마포어(Semaphore) 다중 쓰레드를 사용하게 된다면, 동기화 작업은 필수로 구성되어야합니다. 자칫 잘못 사용할 경우, 데드락에 걸릴 수 있으며, 쓰레드간 호출 순서가 보장되지 않아, 전역으로 선언된 값들이 의도치 않게 변경될 수도 있습니다. 동기화법에 관련되어서 예제와 함께 차근차근 알아보겠습니다. 뮤텍스(Mutex) 뮤텍스는 기본적으로 하나의 자원을 순차적으로 사용하도록 요구하는 구조입니다. 쓰레드1, 쓰레드2, 쓰레드3 ... 등등 여러 쓰레드가 한 곳을 가리킨다면 순서대로 연산이 완료될 때까지 기다렸다가 순서를 넘겨주는 방식입니다. 아래의 코드는 여러개의 쓰레드가 순차적으로 실행이 됩니다. usi.. 2022. 2. 2.
Unity, ScriptableObject 사용 예제 ScriptableObject란? 유니티에서 제공하는 기능으로, 하나의 데이터 폼을 만들 때 사용합니다. 주로 특정 스테이터스, 레벨 디자인 등에서 사용되고 있습니다. 예제 아래와 같이 하나의 폼을 작성합니다. using UnityEngine; [CreateAssetMenu(fileName = "CharacterBaseStatsData", menuName = "ScriptableObjects/CharacterBaseStatsData", order = 1)] public class CharacterBaseStatsData : ScriptableObject { public int Hp; public int Defence; public int Damage; public int AttackSpeed; publi.. 2022. 2. 2.
코인 자동매매 프로그램, 프레임 워크 작업 앞으로 여유될 때 업비트 OpenAPI를 사용하여 프로그램을 만들어 볼 예정입니다. 아직 디자인이나 어떻게 구상할지까지는 작업 중 차차 반영할 예정입니다. 기본적으로 ACCESS_KEY, SECRET_KEY를 발급받고 아래와 같이 진행했습니다. 먼저 진행하게된 작업으로는 Rest API를 사용하여 통신 구조 설계 Json으로 받아와서 각 형식에 맞게 변환 간단하게 로그 찍는 클레스 작성 Rest API 및 통신 구조 설계 Rest API는 들어보기만 했지 사용해본 적이 없었는데, HTTP통신을 좀 더 수월하게 해주는 클레스더군요. 사실 어디까지 어떻게 되나 깊게 보지는 않았습니다. 오롯이 Reqeust -> Response로 원하는 정보가 정확히 오가는지 테스트가 필요했습니다. 데이터가 정상적으로 오가는.. 2022. 2. 1.
반응형