728x90

유니티엔진 126

기간 무료 에셋! $139 팰월드? 스타일 풀3D 몬스터 30개 패키지 + 다양한 3D 에셋들 모두 50%할인! (by NOTFUN)

이번 주 에셋 퍼블리셔 할인 및 무료 에셋 소식입니다. 이번 에셋 퍼블리셔는 NOTFUN 입니다. NOTFUN 은 20개 이상의 디자인 상을 수상하고 3D 분야에서 10년의 경력을 보유한 팀입니다. NOTFUN은 프로토타입을 테스트하거나 게임을 더 빠르고 쉽게 채울 수 있도록 도와줍니다. 요즘 팰월드가 인기몰이 중인데, 타이밍 좋게 유사한 방향성의 에셋 제작사의 할인 이벤트를 진행하는 의도가 숨어있는 것 같긴 합니다. 실제로 스토어에서 에셋들을 둘러보면 그런 느낌이 조금 들 정도. 다음 주 목요일(2월 1일)까지 NOTFUN 의 다양한 에셋들을 유니티 에셋 스토어에서 50% 할인된 가격으로 구입할 수 있습니다. 에셋 할인 이벤트 페이지 https://prf.hn/click/camref:1011lvz7h/..

[Unity] Inspector Custom Editor 에 추가 버튼, 삭제 버튼 추가

아래 이미지처럼 Inspector 에 요소를 추가하는 버튼과, 해당 요소 우측에 삭제하는 버튼을 커스텀하게 만들어 넣는 방법. OnInspectorGUI() 함수를 override 해서 아래 코드처럼 작성. base.OnInspectorGUI() 로 기본 요소들을 그리고 추가 요소들 작성. #if UNITY_EDITOR [CustomEditor(typeof(TrackSegment))] class TrackSegmentEditor : Editor { protected TrackSegment m_Segment; public void OnEnable() { m_Segment = target as TrackSegment; } public override void OnInspectorGUI() { base.OnI..

[Unity] Inspector 에 Addressable AssetReference 배열 노출시키기

아래 이미지의 PossibleObstacles 처럼, Asset Reference 를 연결할 수 있도록 Inspector 에 배열 노출시키려면? 아래처럼 코드 추가. public AssetReference[] possibleObstacles; 이 외에도 여러 타입으로 강제할 수 있음. Asset​Reference​Game​Object Asset​Reference​Label​Restriction Asset​Reference​Sprite Asset​Reference​T Asset​Reference​Texture Asset​Reference​Texture2D Asset​Reference​Texture3D AssetReference https://docs.unity3d.com/Packages/com.unity...

[Unity] Shader Keyword 셰이더 키워드로 동작 조건부 작성

셰이더 키워드를 활용해서 조건부 분기 동작을 작성할 수 있다. #if defined(_MY_KEYWORD) // 이 사이에 KEYWORD 가 활성화 돼있을 때 처리를 추가. #endif float4 pos = v.vertex; #if defined(_CUSTOM_INSTANCING) float4x4 insMatrix = _instancingData[svInstanceID]; pos = mul(insMatrix, pos); #endif 셰이더를 위처럼 작성한 뒤 C# 코드에서는 EnableKeyword 함수를 호출해서 KEYWORD 를 활성화한다. 셰이더 키워드 https://docs.unity3d.com/kr/current/Manual/shader-keywords.html#declaring-keyword..

[Unity] Editor SceneView 에서 카메라 조작하기 (fov, position, rotation)

// Editor Scene View 에서 마지막 활성 Scene View 얻어오기. SceneView sceneView = SceneView.lastActiveSceneView; // FOV(Field of View) 수정 sceneView.cameraSettings.fieldOfView = 45f; // 특정 Object Transform 으로 Scene View 의 Camera 맞추기 (가령 메인카메라) sceneView.AlignViewToObject(camera.transform); // 특정 위치(바운드)로 Scene View Frame 이동시키기 sceneView.Frame(new Bounds(new Vector3(10f,0f,10f), Vector3.one * 10f), false); //..

[Unity] Addressable.LoadAssetAsync() 동기/비동기 처리

Addressables 클래스를 활용한 리소스 동기/비동기 로드 및 캐싱 처리 샘플 코드. // 비동기 처리 public void LoadAsync(string address, Action callback = null) where T : Object { string key = address; if(_loadedAssets.TryGetValue(key, out Object res)) { callback?.Invoke(op.Result); return; } var asyncOperation = Addressables.LoadAssetAsync(key); if (!asyncOperation.IsValid()) { Debug.LogError($"asset load failed : {address}"); retu..

[Unity] Flags Attribute

enum 타입 앞에 [Flags] 어트리뷰트를 붙이면 Inspector 에서 여러 개를 선택 가능한 Bit Flags 처럼 사용할 수 있는데, 이 때 유의해야할 점. None = 0 을 앞이 두어서 아무것도 선택되지 않은 타입을 두는 게 좋다. 각 Enum 값들은 1, 2, 4, 8, ... 처럼 2진수 bit flag 한 자리씩 값을 갖는 숫자로 지정해줘야 한다. (자연수로만 구성하면 하나를 선택했을 때 다른 값도 같이 활성화되는 오동작을 할 수도 있음.) 아래는 샘플 코드. [Flags] public enum ETest { None = 0, Option1 = 1

[Unity] ScriptableObject의 CustomEditor가 있을 때 저장이 안 되는 문제

특정 ScriptableObject 에 CustomEditor를 선언하고 작업할 때, ScriptableObject가 저장되지 않는 경우가 있음. CustomEditor를 정의하면 직접 적용도 해줘야 하기 때문에 그런데, 아래처럼 serializedObject.ApplyModifiedProperties(); 함수를 호출해주면 됨. [CustomEditor(typeof(MyScriptableObject))] public class MyScriptableObjectEditor : Editor { public override void OnInspectorGUI() { DrawPropertiesExcluding(serializedObject, new string[] { "m_Script" }); serializ..

[Unity] 드로우 콜 최적화 (Optimize DrawCall) 요약 정리

[유니티 TIPS] 유니티 최적화를 위한 필수 기본기! Batching 방법 소개 https://www.youtube.com/watch?v=w14yjBlfNeQ 0. 여러 개 메시(mesh), 여러 개 머티리얼을 : 최적화 없음 1. 여러 개 메시, 단일 머티리얼에서 UV좌표 나눠쓰기 : Batches 는 그대로, SetPass call 최적화 2. 동적 배칭 (Dynamic Batching) : Batches, SetPass Call 최적화. 동일 머티리얼의 작은 메시들은 버텍스 버퍼를 재활용 처리. 저가형 기기에서 성능을 최적화하도록 설계. (900개 이상의 버텍스 속성과 300개 이상의 버텍스를 포함하는 메시에 동적 배칭을 적용할 수 없음. 문서 참조.) https://docs.unity3d.com..

[Unity] Unity Engine 버전업 후 에러 메시지 Error : "The type or namespace name 'Newtonsoft' could not be found"

Newtonsoft.Json.JsonConvert 를 사용하고 있었는데, 유니티 엔진(Unity Engine)버전업 후 아래와 같은 에러 메시지가 출력될 경우. "The type or namespace name 'Newtonsoft' could not be found ~ " Newtonsoft 모듈 종속성 설정이 추가되지 않았기 때문. 엔진 버전업 하면서 모듈 설정이 날아가는 모양. Packages/manifest.json 을 열어서 "dependencies" 아래에 모듈 정보를 추가해주면 됨. "com.unity.nuget.newtonsoft-json": "3.0.2" 이렇게. 저장하고 유니티 엔진 리프래쉬 한 번 해주면 끝. GitHub : Newtonsoft Json for Unity https:/..

728x90
반응형