Unity
-
TextMeshPro- TMP_TextInfo ,텍스트 vertices 탐구Unity 2024. 12. 28. 19:16
더보기정보 TMP_TextInfo 란?TMP_TextInfo는 TextMeshPro에서 텍스트의 메쉬 데이터와 관련된 정보를 저장하고 관리하는 구조체TextMeshPro 의 버텍스 데이터를 사용하면 여러 특정 효과를 구현할 수 있다. TextMeshPro는 텍스트를 렌더링할 때, 같은 스타일(재질)을 가진 문자를 하나의 메쉬로 묶어서 관리TMP_TextInfo.meshInfo[] 배열은 텍스트에 사용된 모든 재질(Material)마다 개별 메쉬 데이터를 저장**materialReferenceIndex**는 현재 문자가 어느 메쉬에 속하는지를 알려줌텍스트와 버텍스텍스트 렌더링 시스템에서는 텍스트도 메쉬로 처리가 되며,한 문자당 사각형 형태의 4개의 버텍스로 이루어져 있다.ex) Top Left (0) ..
-
카메라 화면 비율에 대한 오브젝트간의 거리 차이의 고찰Unity 2024. 8. 16. 18:17
해상도와 화면 비율의 차이 - 게임에서는 다양한 해상도와 화면 비율을 지원해야 하기 때문에 이 과정에서 화면의 가로와 세로 비율이 달라질 수 있다. - 예를 들어, 16:9 화면 비율과 4:3 화면 비율에서는 동일한 두 점 간의 x축 거리라도 화면에 보이는 크기가 달라질 수 있고, 이는 카메라가 장면을 렌더링할 때, 가로 축과 세로 축에서 거리를 다르게 취급함 거리 측정의 일관성 문제 - 두 오브젝트 간의 거리를 측정할 때, 이 거리는 실제로는 동일할 수 있지만, 화면 비율에 따라 다르게 보일 수 있다. - 이로 인해, 게임의 논리적 처리가 화면 비율에 따라 달라질 수 있고, 예를 들어, 가로로 넓은 화면에서는 두 오브젝트가 더 가깝게 보일 수 있고, 세로로 긴 화면에..
-
비동기 데이터 저장Unity/제로부터 구현 2024. 7. 25. 16:22
데이터 파일 관리하기1. 플레이어가 가지고있는 고유 데이터와 맵별로 가지고있는 데이터를 분리2. 플레이어 데이터와 맵 데이터를 가지고있는 클래스를 비동기로 저장하기 1. 플레이어가 가지고있는 고유 데이터와 맵별로 가지고있는 데이터를 분리맵마다 가지고 있는 데이터들이 모두 상이하기 때문에 하나의 데이터파일에서 관리하는 것이 가독성이나 필요한 데이터를 찾는 과정이 더 복잡할 것 같아 플레이어 데이터와 분리. 더보기더보기더보기[Serializable]public class SaveFileData{ public SerializableSaveMapDataDictionary SerializableSaveMapDataDictionary; public PlayerSaveData _PlayerSaveData..
-
【Unity】uGUI의 Image와 Sprite Renderer의 구분Unity 2024. 7. 10. 14:49
【Unity】uGUI의 Image와 Sprite Renderer의 구분2D GUI(uGUI/NGUI/구 UI) Unity Sprite iOS Android 최적화·디버그url : http://tsubakit1.hateblo.jp/entry/2016/09/26/080000이미지와 스프라이트 렌더러Unity에서 2D 그림을 쉽게 내보내는 방법으로 생각하는 것이 Sprite Renderer와 같은 2D 기능을 사용하는 방법과 uGUI의 Image계의 기능을 사용하는 방법입니다.둘 다 「텍스처를 표시한다」라고 하는 행동이므로, 화면에 표시한 것 같은 케이스에서는, 전혀 구별이 붙지 않습니다.그럼, 어느 쪽을 사용해도 좋은 것인가라고 하면, 아무튼 어느쪽을 사용해도 좋지만, 유리한 점·불리한 점이 있습니다. Sp..
-
Pentagon Balance UI 제작하기Unity/제로부터 구현 2024. 6. 7. 18:01
캐릭터의 스텟을 받아와 오각형 밸런스 UI로 보여주기 위해 제작* 이번에 제작한 오각형 밸런스 유아이는 월드 스페이스에서 사용되게 제작. 1. 캐릭터의 스테이터스 5가지를 받으면, 각 스테이터스를 최대 스테이터스로 나눠 0 ~ 1 사이의 값으로 만들기.2. 오각형의 각 꼭지점 위치 계산하기 void CalculatePentagonVertices() { for (int i = 0; i 오각형을 만들 것이기 때문에 360을 5 로 나눠준 뒤 꼭지점을 가장 윗부분에 위치시키기 위해 18도에서 시작.각도를 레디안 값으로 변환 후 코싸인을 사용해 각 꼭지점 위치를 구합니다. 3. 오각형의 각 꼭지점 위치와 0 ~ 1 사이의 값으로 만들어 놓은 스테이터스를 사용해 매쉬 생성스테이터스에 ..
-
AssetPreview.GetAssetPreview() 로 얻은 텍스쳐 배경 투명하게 만들어서 저장하기Unity/제로부터 구현 2024. 4. 27. 16:59
AssetPreview.GetAssetPreview() 란?AssetPreview.GetAssetPreview() 는 오브젝트의 프리뷰 이미지를 아주 간단하게 텍스쳐로 가져올 수 있는 Unity Editor에서만 사용 가능한 함수 입니다.기본적으로 AssetPreview.GetAssetPreview() 로 얻은 텍스쳐는 회색 배경의 불투명한 이미지를 만들어 줍니다.하지만 AssetPreview.GetAssetPreview() 로 얻은 이미지의 배경이 불투명하면 다른 오브젝트나 UI에 넣어 사용할때 불투명한 배경이 굉장히 다른 오브젝트나 UI의 그림을 방해하기 때문에 AssetPreview.GetAssetPreview()로 얻은 텍스쳐의 배경을 투명하게 만들어 볼 것 입니다. 1. AssetPreview...
-
16주차 - 오브젝트 프리뷰 텍스쳐로 저장해버리기Unity/Unity 스파르타 2024. 4. 5. 15:44
1. 인게임 커스텀 에디터에 사용되는 설치 가능한 오브젝트를 UI에 보여줄때 리소스 파일에있는 오브젝트의 AssetPreview를 사용해 텍스쳐로 가져와 스프라이트로 전환해 UI에 넣어줬는데, 빌드 후에는 AssetPreview를 사용할 수 없어서 UI에 제대로 이미지가 적용되지 않는 문제가 있었습니다. 오브젝트들의 Sprite 가 파츠처럼 나눠져있어 오브젝트들을 아이콘으로 사용하기위해 따로 아이콘을 만들어야 하나? 너무 번거로움에 다른 방법이 없을까 하고 고민하다가, AssetPreview로 Texture2D 로 가져온걸 그냥 리소스 폴더에 저장하면 안되나? 하는 생각에 여러 시도를 해본결과 AssetPreview로 가져온 텍스쳐를 .EncodeToPNG() 함수를 사용해 텍스쳐를 png 파일로 변환해..
-
16주차 - 인게임용 커스텀 에디터(타일),버튼 색 스크립트로 통제(ColorBlock)Unity/Unity 스파르타 2024. 4. 3. 20:42
1. 커맨드 패턴으로 만든 그리기 도구 2.버튼 색 스크립트로 통제하기 1. 커맨드 패턴으로 만든 그리기 도구 이전에 만든 클래스 다이어그램을 바탕으로 기존에 만들어 놓은 맵 에디터에 적절하게 녹여보기. 커스텀 맵에 사용될 오브젝트들과 타일들의 배치를 맡고있는 placementSystem 에서 클라이언트를 관리하고, 이 클라이언트에게 명령을 내리면 실질적으로 명령을 수행하는 invoker가 명령을 스택에 쌓고 커맨드를 호출합니다. 커맨드 인터페이스에는 실행과 되돌리기를 정의해 놨기 때문에 Invoker에서 스택에 쌓아놓은 ICommand를 하나씩 꺼내 Undo() 함수를 실행 하게되면 손쉽게 이전에 한 작업물로 돌아갈 수 있습니다 public interface ICommand { void Execute(..