개발/Unity, C# 썸네일형 리스트형 C# 을/를 이/가 은/는 등 조사 구별하기 using System.Collections.Generic; public static class StringUtil { private static Dictionary koreanParticles = new Dictionary { { "을/를", new KeyValuePair("을", "를") }, { "이/가", new KeyValuePair("이", "가") }, { "은/는", new KeyValuePair("은", "는") }, }; public static string KoreanParticle(string text) { foreach (var particle in koreanParticles) { var index = text.IndexOf(particle.Key) - 1; while (inde.. C# 생성자와 가상 함수 기본적인 C# 생성자 호출 순서 using System; class Base { public Base() { Console.WriteLine("Base"); } } class Derived : Base { public Derived() { Console.WriteLine("Derived"); } } class Program { public static void Main() { Derived d = new Derived(); } } 기반 클래스 생성자 -> 파생 클래스 생성자 순으로 호출되고 컴파일러가 파생 클래스 생성자 public Derived()에서 public Derived() : base()로 만들어줌 생성자에서 가상 함수를 호출하는 경우 using System; class Base { publi.. Unity C# Enum 사용시 Garbage 문제??? 얼마전까지 유니티에서 enum이나 struct에서를 Dictionary, List 등에서 사용하면 가비지가 발생하는 것으로 알고 사용하고 있었는데.. 유니티 버전이 오르면서 .net 4 버전 이상을 사용하게 됐고 그에 따라 enum인지 체크해서 enum 전용으로 비교해준다고 함... 적당한 테스트 코드 using System.Collections.Generic; using UnityEngine; public class EnumTest : MonoBehaviour { enum TestType { Test1, Test2, Test3, } Dictionary dic = new Dictionary { { TestType.Test1, 1 }, { TestType.Test2, 2 }, { TestType.Test3.. Unity 2Pass Outline Toon Shader Shader "Custom/Outline_2Pass" { Properties{ _MainTex("Albedo", 2D) = "white" {} _BumpMap("BumpMap", 2D) = "bump" {} _OutlineColor("OutlineColor", Color) = (1,1,1,1) _Outline("Outline", Range(0.0005, 0.01)) = 0.01 } SubShader{ Tags { "RenderType" = "Opaque" } Cull front // Pass1 CGPROGRAM #pragma surface surf NoLighting vertex:vert noshadow noambient struct Input { float4 color : Color; }; float4.. Unity 하드웨어 스펙으로 자동 옵션 세팅하기 낮은 스펙의 디바이스로 게임을 하다 보면 게임 최초 시작의 옵션이 높아서 처음에 렉이 걸리는 경우가 있음 그런 경우를 대비해 앱 최초 실행 시 하드웨어 스펙을 체크해 자동으로 옵션을 세팅하는 기능이 필요 하드웨어 주요 스펙으로 CPU, GPU, RAM을 체크함 float cpuScore = 1.0f float gpuScore = 1.0f; float ramScore = 1.0f; cpuScore *= userHardwareSpec.processorFrequency / referenceSpec.processorFrequency; cpuScore *= userHardwareSpec.processorCount / referenceSpec.processorCount; gpuScore *= userHardware.. Unity 배경을 투명하게 캡처하는 방법 (URP프로젝트에서는 안 됨) 광고를 위해 배경을 투명하게 캡처해야 할 일이 생겨서 R&D함 그냥 렌더 텍스쳐를 png로 뽑으면 될 줄 알았는데.. 잘 안 되서 여기저기 검색해서 정리해봄 using System.Collections; using UnityEngine; public class TransparencyCapture : MonoBehaviour { public Camera _camera; private void Update() { if (Input.GetKey(KeyCode.Space)) { Capture(); } } private void Capture() { string path = Application.dataPath + "/capture.png"; StartCoroutine(CoCaptu.. C# Closure 클로저 보통 유니티에서 버튼 세팅을 편하게 하려고 반복문을 사용할 때가 있음 버튼 5개에 private void SetButton() { var buttons = GetComponentsInChildren(); for (int i = 0; i { Debug.Log(i); }); } } 적당히 이런 식으로 세팅하는 경우가 있는데 이러면 결과 버튼 하나만 누른 것이 아니라 5개 버튼 하나씩 누른 결과임 그럼 왜 이런 결과가 나오냐면 기본적으로 메모리에서 힙과 스택의 차이를 알아야 하는데 간단하게 넘어가면 스택메모리는 코드 영역에서 벗어나면 삭제되고 힙 메모리는 참조하는 곳이 없으면 GC가 돌 때 삭제됨 다.. Unity 2019.3 URP Camera Stacking 예전에 LWRP에서 Camera Stacking이 안 된다고 글을 쓴적이 있는데 URP 7.2부터 가능하게 됐다고 함.. https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@7.2/manual/camera-stacking.html 샘플 프로젝트 https://github.com/Unity-Technologies/UniversalRenderingExamples 일단 아주 간단하게 사용법만 써봄 NGUI를 테스트 해보진 않았지만 잘되지 않을까 싶음 메인카메라 렌더 타입을 Base로 추가 카메라 렌더 타입을 Obeerlay로 설정 오버레이 타입 카메라를 메인 카메라의 Stack 리스트에 추가해주면 끝 이전 1 2 3 다음