개발/Unity

개발/Unity

Unity에서 Json .Net 사용하기

Json 자바스크립트의 객체 표기법으로부터 파생된 부분 집합 이름과 값의 쌍으로 이루어진 데이터 JSON .NET 사용하기 JSON .NET for Unity Asset 다운로드(바로가기) Unity C# code에 using Newtonsoft.Json; 추가시 호출 가능 JSON .NET 주요 클래스 JObject JSON Object를 담을 수 있는 Class (key, value) pair를 저장하는 오브젝트 클래스 key : string value : JToken[premitive type, datetime, timespan, uri 등 사용 가능) JObject, JArray를 사용할 수 있음 Example var json = new JObject(); json.Add("id", "Hutom"..

개발/Unity

GPGPU & Unity Compute Shader 기초

사내에서, GPGPU와 Unity를 활용한 Compute Shader에 대해 세미나를 진행할 일이 생겨서 PPT를 정리하면서 개념을 다시 한번 요약해보았다. 석/박때 공부했던 내용들과 최근에 올라온 각종 자료들을 취합해서 요약한 자료를 블로그에도 포스팅한다. 기회가 되면 유니티에서 활용하기 쉬운 예제들로 포스팅을 이어가볼 예정이다. GPGPU General-Purpose computing on Graphics Processing Units 일반적으로 컴퓨터 그래픽스를 위한 계산만 맡았던 그래픽 처리 장치(GPU)를, 전통적으로 중앙 처리 장치(CPU)가 맡았던 응용 프로그램들의 계산에 사용하는 기술 GPGPU 구현 API & 프레임워크 OpenGL Compute Shader DirectX DirectCo..

개발/Unity

URP Light Probe Group

Unity의 렌더링 파이프라인인 URP(Universal Render Pipeline)에는 Light Probe Gorup이라는 개념이 존재한다. Light Map은 고정되어있는 오브젝트로 구성된 scene의 리얼리티를 크게 높여줄 수 있지만, 움직이는 오브젝트들로 구성된 scene에서는 리얼리티가 떨어져보이는 단점이 존재한다. Light Probe를 사용하면 이동하는 오브젝트들의 라이트 매핑을 실시간으로 계산하는 것 처럼, 더 저렴한 비용으로 비슷한 효과를 얻을수 있다. 1. GameObject -> Light -> Light Probe Group 생성 생성한 GameObject에 Light Probe Group 컴포넌트가 추가되어있으며, Edit Light Probes 버튼을 눌러 다음 네가지 기능을..

개발/Unity

PlayerPrefs로 데이터 관리하기

Local 환경에서 자동로그인을 구현한다던지, 점수를 저장하는 등 레지스트리를 활용해 데이터를 관리해야할 상황이 발생한다. 이 때 PlayerPrefs라는 기능을 사용하면 원하는 키워드와 값을 매핑해 레지스트리에 등록할 수 있고, 이를 활용해 데이터를 사용할 수 있다. //SetInt(string key, int value) //SetString(string key, string value) PlayerPrefs.SetInt("state",1); PlayerPrefs.SetString("email",id); PlayerPrefs.SetString("password",pw);

개발/Unity

C#, Unity 소수점 자리수 바꾸기(올림, 내림, 반올림)

C#에서 소수점 자리수를 바꾸기 위해서는 C#의 Math 클래스에 Round 함수를 이용하는 방법이 있다. Unity에서 Vector로 가져온 쿼터니언 데이터를 출력하면 소수점 7자리까지 출력되는 경우들이 있는데, 사용처에 따라 소수점 3~4자리까지만 표현해도 되는 상황이 존재한다. 이 때 아래 함수를 사용하면 손쉽게 Vector를 가공해 다시 저장할 수 있다. public Vector3 RoundVectorData(Vector3 data) { Vector3 res = Vector3.zero; /* Math.Round(데이터,자릿수) : 반올림 함수 example Math.Round(input, 3); 입력 : 1.1234567 출력 : 1.123 */ /* Math.Ceiling(데이터) : 올림 함수..

개발/Unity

Unity - 멀티 디스플레이 활성화 후 안보이게하고싶을 때

Unity에서 Game Scene을 출력할 Display를 1~8까지 설정해 화면에 출력할 수 있다. 카메라 여러대를 각각의 Display에 설정해 출력하고싶을 때 아래 코드로 Display Option을 활성화해야한다. using UnityEngine; void ActivateSecondDisplay() { if (UnityEngine.Display.displays.Length > 1) { // Activate the display 1 (second monitor connected to the system). UnityEngine.Display.displays[1].Activate(); } } 그러나 한번 활성화한 Display는 실행한 유니티 프로그램을 끌 때 까지 종료할 수 없는 단점이 있다. 방법..

개발/Unity

Unity - InputField 입력 이벤트 구현하기

Unity InputField에서 입력 이벤트를 구현하는 이벤트 핸들링 메소드는 두 가지 종류가 있다. onEndEdit / onSubmit 두 방법에는 아래와 같은 차이점이 있으니, 원하는 방식으로 이벤트 메소드를 구현하면된다. 1. onEndEdit - 편집이 끝났을 때 호출되는 이벤트 메소드 2. onSubmit - 편집을 끝내고 직접 입력 버튼(Keyboard Enter)을 눌렀을 때 호출되는 이벤트 메소드 onEndEdit을 사용할 경우, 모바일 환경에서 키패드 입력 창이 닫히면 호출이 되는 현상이 있으므로 증분검사를 하는 케이스가 아니면, onSubmit을 사용하는것이 바람직해보인다. Sample Code using UnityEngine; using System.Collections; usin..

개발/Unity

Unity - 스크립트로 Shader Rendering Mode 변경하기

스크립트로 Shader의 Rendering Mode를 Opaque, Transparent로 변경하는 경우가 종종 있다. 이 때 분명히 Rendering Mode를 변경했는데, 반영이 되지 않는다면 아래와 같은 코드를 적용하면 된다. public enum BlendMode { Opaque = 0, Cutout, Fade, Transparent } public static void changeRenderMode(Material standardShaderMaterial, BlendMode blendMode) { switch (blendMode) { case BlendMode.Opaque: standardShaderMaterial.SetFloat("_Mode",0.0f); standardShaderMateria..

njsung
'개발/Unity' 카테고리의 글 목록