본문 바로가기
728x90

R&D7

Unity, 매쉬 변형 예제 매쉬 변형 런타임 중 물체 형태 변형 또는 캐릭터 얼굴의 형태를 커스터마이징할 때, 사용되는 기술 중 하나입니다. 유니티에서는 매쉬 변형 관련된 코드를 제공하고 있습니다. 스크립트 MeshDeformer.cs using UnityEngine; public class MeshDeformer : MonoBehaviour { private Mesh _deformingMesh; private Vector3[] _originalVertices, _displacedVertices; private void Start() { // 매시 버텍스 정보 가져오기 _deformingMesh = GetComponent().mesh; _originalVertices = _deformingMesh.vertices; _displac.. 2024. 1. 23.
Unity, 유니티 버전 업그레이드 이후 전체 파일 및 에셋 갱신하기 (Refresh) 유니티 버전 업그레이드 ex) Unity2020 -> Unity2022 프로젝트를 업그레이드하는 경우, 유니티 버전 별로 각 메타(.meta)파일 또는 프리팹, 메테리얼 등 지원하는 포맷이 약간씩 다릅니다. 유니티 업데이트 이후, 해당 에셋(파일)에 접근하지 경우에만 최신 갱신을 해주는 형태입니다. 그래서인지 건들지도 않았던 에셋들이 변경되어있고, 이는 자세히 알 수도 없습니다. 이를 위해 깔끔하게 전체적으로 갱신을 해주는 작업이 필요해집니다. 스크립트 아래와 같이 ForceReserializeAssets()을 호출하면 프로젝트 내의 모든 에셋 갱신을 시도합니다. using UnityEditor; public class UtilsWindow : EditorWindow { /// /// 윈도우 열기 ///.. 2022. 12. 22.
C#, 서버 시간으로 동기화하기 (HTTP 웹사이트 동기화) 서버 시간을 가져와야하는 이유 대부분의 프로그램(앱)에서는 클라이언트와 서버 간의 통신이 존재합니다. 하지만 클라이언트에서 사용하는 시간이 있고, 서버에서 사용하는 시간이 따로 존재하며 이 둘은 서로 동기화가 필요합니다. 클라이언트에서 단순하게 'DateTime.Now' 사용한다면 이는 기기 시간 변경만으로도 에러 및 프로그램 내부적인 스케줄링에 치명적으로 영향을 줄 수 있습니다. 프로그램 시간 제약 조건 제가 생각하는 제약 조건은 아래와 같습니다. DateTime.Now와 같은 IDE에서 제공하는 기기 시간을 가져오는 코드 사용은 지양한다. 이는 클라이언트에 영향을 끼칠 수 있습니다. DateTime.Now 대신 사용할 시간을 따로 관리하는 로직을 구상하여 사용한다. 기기 시간을 조작해도 영향을 끼치지.. 2022. 8. 13.
Unity, 전역으로 코루틴 사용하기(Static Coroutine) 정적 코루틴 클래스 유니티를 사용하다보면 코루틴(Coroutine)을 많이 사용하게 되는데, 컴포넌트를 사용 중인 게임 오브젝트가 비활성화 되면 중단되어버립니다. 코루틴을 많이 사용하게 되면 왜 이렇게 사용하게 되는지 이해가 되는데, 주로 컴포넌트를 사용 중인 게임 오브젝트에서 개별적으로 처리하기 위함입니다. 하지만 사용을 하다보면 쓰레드의 백그라운드 워커처럼 코루틴을 백그라운드에서 사용하고 싶은 경우가 생깁니다. 예를 들어서 쓰레드에서는 처리하기 애매한 Resources.LoadAsync()를 연계해서 쓰고 싶은데 쓰레드를 생성해서 사용하기에는 무리가 있습니다. 스크립트 1. StaticCoroutine.cs using System; using System.Collections; using System.. 2022. 7. 24.
NGUI Atlas 화질 저하 해결 방법 NGUI Atlas 화질 저하? NGUI Atlas로 묶으면 이상하게 원본과 다르게 품질 저하가 발생한다. 해당 관련되어서 정보를 알아보면 아래와 같은 이유를 찾을 수 있다. 아틀라스 사이즈가 커질 수록, 화질 저하가 발생한다. 이는 아틀라스를 만드는 내부 로직 또는 유니티 버전별 내부 로직 의심. (명확한 이유가 없다는 과거글) 실제 진행하는 프로젝트 개발 과정에서, UI 디자이너와 아트 디렉터(AD) 분들이 뭉개져 보인다는 제보를 들었다. 원본 리소스 개별 리소스와 아틀라스를 비교를 해서 확대해보니 픽셀이 깨져보이고 있었다. 원인 유니티에서는 모든 파일을 'Object'클래스를 상속받은 파일로 일괄 관리를 한다. 그래서 부가적으로 각 파일마다 메타 파일이라는 것이 생기고, 거기서 속성을 조절할 수 있.. 2022. 4. 23.
Unity, UI Masking 중첩 해결 방안 마스크 이미지를 미리 생성해주는 패키지 마스크 기능이 들어가는 UI의 경우 중첩으로 마스크를 지원해주지 않은 경우가 있습니다. 현재 제가 사용 중인 NGUI의 경우 중첩으로 마스킹 하는 경우 제대로 스텐실 쉐이더가 작동하지 않아 깨집니다. NGUI에 대해서 조금 더 알아보니 중첩 마스킹은 지원하지 않는다고 합니다. NGUI측에서는 셰이더 스텐실 연산이 중첩으로 들어가는 경우가 연산에 문제가 생기는 이슈가 있어서 지원하지 않는다고 하네요. 그러면 개별적으로 마스킹 텍스쳐를 생성하고 받아오면 되지 않을까라는 생각에, 마스킹 이미지를 만들어주는 ScriptableObject를 작성했습니다. 예제 1. SciptableObject Data 생성하기 2. 텍스처, 마스크, 좌표 설정 3. 스크립트에서 사용하기 p.. 2022. 3. 6.
C#, Performance Of String String class 사용하는 방식은 여러가지가 있습니다. 1. String Operator (+, +=) 2. String.Format 3. Interpolation 4. String.Join 5. String.Concat 6. StringBuilder 아래의 예제는 모두 같은 결과를 출력합니다. using System.Text; public class SingleLineJoin { public string string1 = "a"; public string string2 = "b"; public string string3 = "c"; public string string4 = "d"; public string string5 = "e"; public string Interpolation() { ret.. 2022. 1. 17.
반응형