-
유니티6 구글 플레이 스토어 출시 마스터북 / Unity Google Play Store Publish Masterbook유니티 2025.02.22 00:09
기대효과해당 글은 항상 반복되는 모바일 출시 시 리젝이나 재빌드를 최대한 줄이기 위함이며잘 따라하신다면 무리없이 구글 플레이스토어까지 출시할 것으로 기대합니다.저는 지금까지 항상 모바일 시장 중 구글 플레이스토어에 대부분의 게임을 출시하며험난한 출시과정 반복되는 피로감을 줄이기 위해 유니티6에 맞게 노하우를 정리하며 해당 글을 자세히 씁니다.특히나 다양한 방식으로 리젝을 많이 경험하였기에 리젝을 피하는 노하우들을 모두 알려드리니 꼼꼼히 봐주세요. 스압주의 목차구글 플레이스토어 개발자 등록 조건사업자 등록증 인증유니티6 빌드 셋팅유니티6 프로젝트 셋팅애드몹 광고 셋팅개인정보처리방침 작성구글 플레이 게임 서비스 (선택)구글 플레이 콘솔 앱 설정유니티 에디터에서 영상과 이미지 촬영구글 플레이 콘솔 버전 생..
-
파이어베이스 인증 데이터베이스 서버코드 백엔드 사용하기 / Unity Firebase Auth Firestore Functions Tutorial유니티 2024.12.30 22:41
파이어베이스란? 구글에서 제공하는 클라우드 기반 백엔드 플랫폼입니다.가격이 저렴하며 백엔드를 편하게 쓰는 장점이 커서 수많은 개발자에게 사랑받고 있습니다.웹 개발에서 백엔드는 주로 파이어베이스를 기본으로 쓸 정도로 대중화 되어있습니다. https://firebase.google.com/docs공식문서를 참고하시면 더욱 좋습니다. 특징으로는유니티에서 백엔드를 쓸 때 플레이팹, 뒤끝, 파이어베이스 등이 있는데 그중 파이어베이스 가격이 가장 저렴합니다.인증과 데이터를 저장하는 파이어스토어는 물론 실시간 데이터로 채팅도 가능합니다.클라우드 펑션을 쓰면 서버에서 함수가 실행되어 보안도 됩니다. 사용할 제품으로는 Authentication 인증, Firestore 데이터베이스, Functions 서버코드 입니다...
-
퀵 커맨드(QuickCommand) 런타임 명령어 및 로그 모니터링 에셋 / Unity Runtime Command Console and Log Monitor유니티 2024.12.29 03:38
퀵 커맨드(QuickCommand)란?런타임 중에 명령어로 함수를 호출할 수 있으며 로그를 보는 등 테스트에 매우 유용하게 사용될 것입니다.제가 직접 만든 에셋으로 유니티 에셋스토어 유료에셋 판매 예정이므로 똑같은 에셋으로 에셋스토어 등록은 불가합니다.이 글을 보시는 여러분들은 상업용 무료로 사용하시면 되겠습니다! 특징으로는유니티 Window - General - Console에 뜨는 Debug 로그를 똑같이 볼 수 있습니다.일반적인 로그는 흰색, 경고는 노랑, 에러 및 익셉션은 빨강에 디테일 로그도 표시됩니다.명령어로 실행하고 싶은 함수 위에 [Command] 어트리뷰트만 붙히면 런타임 중에 함수를 실행할 수 있습니다.단축키로 명령을 입력할 때 축약해 입력할 수 있습니다.자주 변화하는 값을 로그 위쪽에..
-
유니티 게이밍 서비스 릴레이 마스터하기 / Master Unity Gaming Service Relay UGS유니티 2024.12.29 00:39
유니티 게이밍 서비스 릴레이(UGS Relay)란?클라이언트 간의 직접적인 연결이 어려운 상황에서 중계 역할을 수행하여 데이터 통신을 가능하게 하는 서버입니다.서버를 유니티 측의 컴퓨터를 이용하며 유니티의 서버를 사용하기에 월 무료구간 이후 과금제로 운영됩니다. https://unity.com/kr/products/gaming-services/pricing에서 가격을 확인할 수 있습니다.https://docs.unity.com/ugs/ko-kr/manual/relay/manual/introduction에서 공식문서를 확인할 수 있습니다. 릴레이의 특징으로는UGS 다른 서비스와 호환이 좋고 매우 간단하게 이용가능합니다.데디케이티드 서버, 호스트, 클라이언트 접속이 됩니다. 설치Window - Packa..
-
유니티 게이밍 서비스 로비 마스터하기 / Master Unity Gaming Services Lobby UGS유니티 2024.12.28 02:33
유니티 게이밍 서비스 로비(UGS Lobby)란?유니티 게이밍 서비스 중 플레이어를 관리하고 매칭시켜주는 로비 서버입니다.유니티의 서버를 사용하기에 월 무료구간 이후 과금제로 운영됩니다.https://unity.com/kr/products/gaming-services/pricing 에서 가격을 확인할 수 있습니다.https://docs.unity.com/ugs/ko-kr/manual/lobby/manual/unity-lobby-service에서 공식문서를 확인할 수 있습니다. 로비의 특징으로는로비의 생성, 참여, 수정, 삭제를 간편하게 할 수 있습니다.로비 목록을 필터링을 걸어 확인할 수 있습니다.로비와 플레이어의 데이터를 편집할 수 있습니다.비밀번호로 참여, 참여코드로 참여, 빠른 참여가 가능합니다...
-
멀티 서버 게임오브젝트 넷코드 마스터하기 / Master Unity Netcode for GameObjects유니티 2024.12.27 01:54
넷코드(Netcode)란?유니티의 서버용 코드입니다.과거 유넷(Unet)이나 미러(Mirror)의 유니티 최신 상위호환이라고 보면 됩니다.넷코드 자체는 무료입니다.넷코드 만으로는 자체 서버를 돌리는 등의 작업이 별도로 필요합니다. 또는 용량제 가격으로 유니티 서비스의 로비 서버와 릴레이 서버를 합해서 이용하는 방법이 있습니다.https://unity.com/kr/products/gaming-services/pricing에서 다양한 유니티 게이밍 서비스 가격을 확인하실 수 있습니다.https://docs-multiplayer.unity3d.com/netcode/current/about/에서 공식문서를 확인할 수 있습니다. 넷코드의 특징으로는데디케이티드 서버, 호스트, 클라이언트로 연결할 수 있습니다.변수..
-
궁극의 구글 스프레드시트 자동 데이터 불러오기 / Ultimate Google Spreadsheet Auto Calling Data유니티 2024.08.29 17:01
완성본 미리보기구글 스프레드시트 그대로 유니티에서 클래스 생성없이 모든게 자동화 됩니다.기획자의 수많은 수정이 유니티에 그대로 반영되어 개발 노가다가 매우 감소합니다.구글 앱스스크립트로 작성된 api와 통신해 json으로 모든 시트와 데이터를 불러오기 때문에,csv나 tsv통신은 읽기 길이에 제한이 있지만 이것은 길이 제한이 없습니다.원하는 시트들만 클래스로 만들도록 선택할 수 있습니다.변수 생성 시 int, float, bool, string 중 하나로 파싱됩니다.csv에서 파싱 중 문제가 있었던 문자 , ' " 에 대해서도 파싱이 가능합니다.버그 안정성을 위해 빌드된 플랫폼에서는 로컬에 저장된 스크립터블 오브젝트를 이용합니다. 그래서 이것은 궁극기입니다! 구글 스프레드시트 셋팅구글 스프레드시트(h..
-
유니티 쉽게 배우는 디자인 패턴 - 경량 패턴 / Unity Design Pattern - Flyweight Pattern유니티 2024.08.27 19:06
경량 패턴이란?대량의 객체의 메모리를 공유하여 최적화하는 패턴입니다.유니티는 모바일 타겟으로 만드는 게임이 많기에 항상 메모리 최적화에 관심이 많습니다. 코루틴에서 WaitForSeconds가 new를 할 때마다 메모리를 할당하기에 캐싱하거나딕셔너리의 키와 값으로 같은 키라면 값이 공유되도록 캐싱하거나스크립터블 오브젝트의 공통된 자원은 공유되도록 캐싱하는 등이미 여러곳에서 최적화를 위해 쓰이고 있습니다.- 캐싱이란? 데이터의 접근 성능을 향상시키기 위해 자주 사용되는 데이터를 임시로 저장하는 기술입니다. 딕셔너리로 캐싱하는 방법Cache.csusing System.Collections.Generic;using UnityEngine;using System;public class Cache { publ..
-
유니티 쉽게 배우는 디자인 패턴 - MVC, MVP, MVVM 패턴 / Unity Design Pattern - MVC, MVP, MVVM Pattern유니티 2024.08.23 00:33
개요게임을 개발하다보면 기획에 따라 과정 중 UI의 변경이 참 많습니다.이때 로직과 뷰를 분리하면 효과적으로 수정에 대응할 수 있습니다. 저도 로직과 뷰를 분리하여 개발했을 때와 안 했을 때 효율의 차이가 났습니다. 그럼 MVC, MVP, MVVM 패턴에 대해 알아보겠습니다.위 셋은 MV가 앞에 공통으로 붙는데요.데이터를 담는 Model과 화면에 보여주는 View를 공통으로 가지며Model과 View를 어떻게 연결할 것이냐에 따라 Controller, Presenter, ViewModel인지를 구분합니다. Model은 여기서는 단순히 스크립트에서 데이터를 표현하였지만스크립터블 오브젝트, 서버에 올라간 값, 로컬 텍스트로 저장된 값 등을 의미합니다. View는 가장 많이 쓰는 곳이 UI이지만3D 모델, 애..
-
유니티 쉽게 배우는 디자인 패턴 - 팩토리 패턴 / Unity Design Pattern - Factory Pattern유니티 2024.08.23 00:03
팩토리 패턴이란?객체 생성만을 담당하는 패턴입니다. 공장에서 물건을 찍어낼 때 주문을 넣으면 나오듯string 또는 enum으로 생성하라고 호출하면 해당하는 객체를 생성해 반환해 줍니다. 장점으로는 객체를 생성할 때 매개변수의 구조가 바뀌면 모든 스크립트의 생성부분을 변경해줘야 하는데이것을 생성을 담당하는 팩토리 클래스에서 처리하게 되면 일이 간단해집니다. 포톤 서버(https://doc.photonengine.com/ko-kr/server/current/plugins/manual)에서플러그인 이름에 따라 다른 객체를 생성할 때 사용하고 있습니다. 팩토리 패턴은 게임오브젝트를 생성해 반환해 주는 경우 프리팹으로 대체할 수 있습니다. 심플 팩토리 패턴Factory.csusing UnityEngine;..
-
유니티 쉽게 배우는 디자인 패턴 - 전략 패턴 / Unity Design Pattern - Strategy Pattern유니티 2024.08.21 16:51
전략패턴이란?모드가 바뀔 때 사용하는 패턴입니다.같은 함수를 호출하더라도 모드에 따라 다른 코드가 실행됩니다. 같은 움직임이라도 플레이어의 움직임, AI의 움직임, 적의 움직임에 따라 모드를 바꾸거나총을 쏘더라도 권총, 산탄총, 소총에 따라 모드를 바꾸거나공격을 하더라도 칼, 총, 지팡이에 따라 모드를 바꾸는 등에 용이하게 사용되고 있습니다. 전략패턴을 설명하는 다른 글들을 보면 주로 전투 관련으로 사용하고 있지만저는 데이터 불러오기를 예시로 보여드리겠습니다.로컬, 구글 스프레드 시트, 깃허브 지스트에서 텍스트를 불러오는 방법을 설명드리겠습니다.같은 데이터 불러오기이지만 불러오는 방식이 다르기에 모드를 바꾸는 개념과 같아서 전략패턴이 적합합니다. 전략패턴 반영 전DataController.csusin..
-
유니티 쉽게 배우는 디자인 패턴 - 상태 패턴 / Unity Design Pattern - State Pattern유니티 2024.08.19 17:22
상태패턴이란?상태마다 동작을 수행해야 할 때 사용하는 패턴입니다.이때 상태는 동시에 가질 수 없고 반드시 하나의 상태만 갖습니다. Animator 메카님의 각 상태에 따라 캐릭터 애니메이션이 바꾸거나FSM 유한상태머신에서 상태에 따라 다른 스크립트가 실행되야 할 때 용이하게 사용되고 있습니다. 상태패턴 반영 전StateManager.csusing UnityEngine;public enum EState{ Idle, Walk}public class StateManager : MonoBehaviour{ [SerializeField] EState currentState; public void TransitionTo(EState nextState) { if (curr..
-
유니티 쉽게 배우는 디자인 패턴 - 명령 패턴 / Unity Design Pattern - Command Pattern유니티 2024.02.07 17:32
명령패턴이란?실행될 동작을 클래스로 만들어 실행과 실행취소를 쉽게 만들어주는 패턴입니다. Input에서 명령을 순차적으로 수행하거나Command Buffer에서 그래픽을 버퍼에 순차적으로 그리거나체스같은 그리드기반의 턴제 게임에서 실행취소가 용이하므로 사용되고 있습니다.리플레이에서도 각 시간마다 입력 명령이 다르기에 사용됩니다. 명령패턴 반영 전Robot.csusing UnityEngine;[System.Serializable]public class Robot { public Vector2Int position; public Vector2Int direction; public Robot(Vector2Int position, Vector2Int direction) { ..
-
유니티 쉽게 배우는 디자인 패턴 - 의존성 주입 패턴 / Unity Design Pattern - Dependency Injection Pattern유니티 2024.02.07 11:28
의존성 주입 패턴이란?해당 클래스에 필요한 인스턴스를, 외부로부터 생성자나 함수를 통해 주입받아 사용하는 패턴입니다.동적으로 생성되는 오브젝트가 매니저급 클래스를 참조할 때 효율적입니다. 싱글톤은 어디서든 접근할 수 있는데 호출하는게 많을수록 의존성이 높아집니다.그러면 사소한 것 하나를 바꾸려고 해도 얽힌게 많아 바꾸기 힘들 수 있습니다.반면 의존성 주입은 필요한 상황에서만 인스턴스를 가져다 쓰기 때문에 의존성이 적은 장점이 있습니다. 동적생성 시 의존성 주입 GameManager가 하이어라키에 존재하고 Player 프리팹을 만들어 넣어둔 상황입니다. Player 프리팹에는 Player 스크립트를 넣어두었습니다. GameManager.csusing UnityEngine;public class Gam..
-
유니티 쉽게 배우는 디자인 패턴 - 싱글톤 패턴 / Unity Design Pattern - Singleton Pattern유니티 2023.11.01 13:00
싱글톤 패턴이란?클래스의 인스턴스를 단 하나(Single)만 유지하고, 외부에서 어디에서든 접근할 수 있도록 하는 패턴입니다. 유니티를 입문하거나 디자인패턴을 모르더라도 가장 많이 들어봤을 패턴 중 하나일텐데요. 싱글 + 톤으로 단 하나임을 아시면 되겠습니다. AudioManager.Instance로 접근하여 사운드를 재생하거나VibrationManager.Instance로 접근하여 진동을 하거나IAPManager.Instance로 접근하여 인앱결제를 하는 등매니저급 클래스를 만들어 이미 많이 사용되고 있습니다. 왜 그러냐면 다른 스크립트에서 사운드를 재생하고 싶은데, [SerializeField] AudioManager audioManager; 를 쓰고 인스펙터에 드래그하여 넣고 하는 과정이 불편할 ..
-
유니티 쉽게 배우는 디자인 패턴 - 빌더 패턴 / Unity Design Pattern - Builder Pattern유니티 2023.10.31 11:54
빌더 패턴이란?객체를 생성할 때 조립하듯 쌓아올리는 패턴입니다. 객체를 생성할 때 매개변수가 너무 많고 다양한 변화가 필요할 때로직을 분리해 부분부분 계산할 수 있는 장점이 있습니다. System.Linq 에서 생성시 조립하는 형태Dotween 에서 생성시 조립하는 형태에서 이미 사용이 되고 있습니다.Dotween은 애니메이션을 모션감있게 간편하게 만드는 기능입니다.해당 무료 에셋을 다운 후 사용하시면 됩니다.https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676 System.Linq 에서 사용되는 예시using System.Collections.Generic;using UnityEngine;using System.L..
-
유니티 쉽게 배우는 디자인 패턴 - 옵저버 패턴 / Unity Design Pattern - Observer Pattern유니티 2023.10.18 13:21
디자인 패턴이란?디자인 패턴이란 코드 구조를 설계하는 패턴입니다.제일 중요한 건 디자인 패턴을 맹신하여 굳이 필요없는 부분에 강제로 쓰지 않는 것입니다.왜 이 디자인패턴이 이 상황에 효율적인지 설명하지 못하면 실패한 설계입니다. 옵저버 패턴이란?옵저버 패턴은 이벤트를 주체에서 발생시키고관찰하는 대상은 주체를 구독함으로 실행 시점을 이벤트로 받아올 수 있습니다. 음악이 끝남을 알려주는 이벤트광고를 다 봤음을 알려주는 이벤트게임이 종료되었음을 알려주는 이벤트 등많은 부분에서 이미 사용이 되고 있습니다. UI의 버튼을 누르면 OnClick() 이벤트를 발생시켜 클릭할 때 변화를 알려주는 것에도 사용이 되고 있습니다. GameManager 클래스에서 Moved라는 함수를 실행했다고 해봅시다.Move..
-
유니티 Enum을 플래그로 만들어 다중선택 판단하기 / Unity Enum Flags유니티 2023.10.17 14:34
Enum을 플래그(Flag)로 만들어 인스펙터에서 다중 선택을 해 봅시다.그리고 어떤 게 체크가 되어있는지 판단해 봅시다. [Flags] public enum EActType { None = 0, Run = 1 Enum을 선언할 때 애트리뷰트로 [Flags]를 붙혀 Enum Flags라고 해줍니다. 또 안에 값을 넣는게 중요한데 None은 0으로 만들어 두어 선택할 때 없는 상태를 명시할 수 있습니다. 그리고 이후 값들은 시프트 비트연산으로 순서대로 값을 대입합니다. 1 Enum시프트 연산자 대입값이진법십진법None000000Run1 00011Fly1 00102Speak1 01004 이진법은 (2)라고 표현하겠습니다. Run과 Fly를 두개 체크하면 ..
-
유니티 for나 foreach에서 리스트 제거하기 / Unity Remove the List from For Foreach유니티 2023.10.16 17:27
foreach내에서 Remove가 안되는 이유 List nums; void Start() { nums = new List { 1, 2, 3, 4 }; foreach (int num in nums) { nums.Remove(num); } }리스트를 for나 foreach같은 반복문 내에서 Remove로 제거하려고 하면 InvalidOperationException: Collection was modified 으로 에러가 뜹니다.foreach 문 안에서 순회하는 원본을 제거하면 안되는 건데요. 중간에 제거해버리면 리스트의 크기가 변하면서 인덱스가 앞으로 당겨와지기 때문입니다. List nums; ..
-
유니티 에셋 로그 뷰어로 빌드시 로그 확인하기 / Unity Asset Log Viewer Check Log at Build Time유니티 2023.09.21 14:43
사용 이유 Log Viewer | 기능 통합 | Unity Asset StoreUse the Log Viewer from dreammakersgroup on your next project. Find this integration tool & more on the Unity Asset Store.assetstore.unity.com보통같은 경우는 유니티 에디터에서는 콘솔의 로그로 확인해 디버깅합니다. 하지만 실제 빌드된 환경에 올려보았을 때도 로그를 확인하기 위해 이 에셋을 사용합니다.빌드된 PC와 모바일에서도 유니티 에디터 Console 로그를 똑같이 볼수 있습니다. 로그 뷰어 (Log Viewer) 무료 에셋을 에셋스토어에서 다운받고 임포트합니다. 로그 뷰어 셋팅Reporter탭 - Creat..
-
유니티 에셋 이지세이브로 진짜 쉽게 데이터 저장 / Unity Asset Easy Save Data Save and Load유니티 2023.09.21 14:12
이지세이브의 특징 Easy Save - The Complete Save Data & Serializer System | 유틸리티 도구 | Unity Asset StoreUse the Easy Save - The Complete Save Data & Serializer System from Moodkie on your next project. Find this utility tool & more on the Unity Asset Store.assetstore.unity.com이지세이브는 데이터의 저장과 불러오기를 편리하게 해주는 기능입니다.int, string 등은 물론 클래스나 배열, 리스트도 JSON으로 암호화해서 저장할 수 있습니다.해당 이지세이브 에셋을 구매 후 유니티에 임포트하신 뒤 사용하시면 됩..
-
유니티 모바일 시뮬레이터로 다양한 해상도 대응하기 / Respond to Wide Range of Resolutions with Unity Mobile Simulator유니티 2023.09.07 11:07
모바일 기기 시뮬레이터의 필요성스마트폰의 디자인이 너무나 제각각이라 개발자들의 한숨소리가 깊어집니다. 위아래 노치가 있는지도 봐야하고전면 카메라가 가려지는지도 확인해야하며모서리 곡면인 경우도 확인해야 하기도 하고해상도는 또 제각각이라스마트폰 기종별로 구매해 테스트해보는 게임사들도 생겨났습니다. 스마트폰 기종을 구매할 필요 없이게임뷰에 해상도 값을 일일히 입력할 필요없이유니티 에디터상에서 각 스마트폰에서 어떻게 보여질지 미리 볼 수 있습니다. 실제 모바일의 성능을 테스트하는건 아니며 화면에 어떻게 보여질지만 보여주는 것입니다. 시뮬레이터 실행게임뷰 왼쪽 상단을 Simulator로 선택합니다. 바로 옆에 탭에 볼 수 있는 기기가 있어 해상도와 UI가 가려지는 영역을 바꿔볼 수 있습니다. Fit to..
-
유니티 추상클래스로 깔끔한 코드 작성하기 / Unity Abstract Class유니티 2023.09.05 13:21
추상클래스의 장점추상클래스는 템플릿이라고 생각합니다.함수를 반드시 구현해야 할 것을 명시해 추상클래스를 상속하는 개발자에게 명확한 안내를 제공합니다.전 과거에 추상클래스의 필요성을 못 느꼈다가비슷한 기능을 한데 묶어 간결하게 표현할 수 있는 걸 찾다가 매력에 빠지게 되었습니다. 오크와 고블린 예제오크는 좌우로 움직이며 1초마다 몸통박치기 공격을 합니다.고블린은 상하로 움직이며 2초마다 칼을 휘두르는 공격을 합니다.위 둘은 공통점이 움직인다, 공격한다입니다.그러면 공통되는 Move 함수와 Attack 함수를 추상클래스로 구현해상속을 받으면 공통되는 부분이 묶여서 함수가 간결해집니다. 공통으로 관리하면 데이터 처리에도 매우 효과적입니다. 부모 추상클래스 작성using UnityEngine;public..
-
유니티 함수 내에서만 사용되는 지역함수 / Unity Local Function유니티 2023.09.05 11:45
전역변수와 지역변수using UnityEngine;public class Test : MonoBehaviour{ int globalValue = 1; void Start() { int localValue = 2; }}globalValue는 클래스 바로 하위에 선언되어있어 이 클래스 내 어떤 함수에서도 접근이 가능하여 전역변수라고 부릅니다. localValue는 Start라는 함수 안에 선언되어있어Start 함수 안에서만 접근이 가능하여 지역변수라고 부릅니다. 중괄호 { } 가 끝나면 지역변수는 메모리에서 해제가 됩니다. 함수의 매개변수도 지역변수int Calc(int value){ value = value * 10; return value + 1;}이 함수에서 매..
-
유니티 튜플 사용법 / Unity How to Use Tuple유니티 2023.09.05 11:20
튜플은 어디에서 사용될까요?보통 함수의 반환형식은 1개입니다.그래서 커스텀 class나 struct로 반환하기도 하지요.두개 이상이고 나오는 형태가 명확할 때 out 키워드를 쓰기도 합니다.하지만 범용적으로 사용되는 목적이 아닌임시로 사용되면서 두개 이상의 값을 편하게 반환받고 싶을때 튜플을 잘 사용하고 있습니다. 생성(int, float) tuple = (1, 3.14f);print(tuple.Item1); // 1print(tuple.Item2); // 3.14두가지 이상의 형식을 괄호로 묶습니다.첫번째부터 Item1, 두번째는 Item2 처럼 접근합니다. 전역변수에서 public으로 선언해도 인스펙터에 드러나지 않는 특징이 있습니다. 이름을 붙혀 생성(int num, float pi) tup..
-
유니티 반응형 UI 기초지식 / Unity How to Make Flexible Responsive UI유니티 2023.08.31 18:20
UI에서 자주 사용되는 텍스트와 이미지 정렬과 배치 방법에 대해 알아봅시다. 1. 텍스트 길이에 따라 Rect 변경Text에 Content Size Fitter를 추가하고 Horizontal Fit을 Preferred Size로 두면 가로 길이가 유동적으로 늘어납니다.Text 컴포넌트의 Align By Geometry를 체크하면 메쉬기준으로 정렬이 되니 더 이상적으로 정렬이 됩니다. 2. 텍스트 길이에 따라 왼쪽부터 늘어나도록 Rect 변경Rect Transform의 Pivot의 X를 0으로 하면 왼쪽이 기준이되어 오른쪽으로 늘어납니다.반대로 1로하면 오른쪽이 기준이 되어 왼쪽으로 늘어납니다.기본값이 0.5라서 중앙에서부터 늘어났던 것입니다. 3. 텍스트 길이에 따라 이미지가 양쪽에 위치하게 ..
-
유니티 비주얼 이펙트 그래프 백과사전 / Unity Visual Effect Graph All Nodes유니티 2023.08.31 16:07
비주얼 이펙트 그래프란?GPU에서 작동하는 대규모 시각효과에 사용되는 파티클 효과에 사용됩니다.기존 파티클 시스템의 단점을 보완하기 위해 등장한 친구로 매우 혁신적입니다.100만개 이상의 파티클도 GPU가 허락한다면 컴퓨터에서 돌아갑니다. 기존 파티클 시스템의 단점CPU에서 작동하기에 소량의 파티클만 표현할 수 있었습니다.제한된 형태의 움직임만 표현할 수 있었습니다.인스펙터에서 수정해야 해서 노드간 조합이 불가합니다. 문서 공유Visual Effect Graph의 노드를 하나하나 연구하면서 분석한 것을 노션에 정리하였습니다.중복된 것은 다시 적지 않았기 때문에 위에서부터 읽어가는 것을 추천합니다. $$ 표시된 것은 애매해서 연구중인 것입니다.셰이더 그래프와 유사해서 금방 적응할 수 있을 것입니다. ..
-
유니티 AES 암호화, 복호화하기 / Unity AES Encrypt and Decrypt유니티 2023.08.31 15:54
암호화의 필요성유니티로 만든 게임에서 핵 문제가 참으로 많습니다.디컴파일 프로그램을 이용하면 코드 자체를 뜯어볼 수 있고 이를 방지하기 위해 디컴파일한 코드 읽기를 힘들어하도록 난독화 에셋 Obfuscator 을 사용하기도 합니다. 개발자는 코드수정은 못 막더라도 최소한 저장된 데이터를 변형하기 힘들게 하도록 하는 노력은 해야합니다.그냥 txt파일에 세이브 파일을 누구나 다 읽을 수 있도록 JSON 등으로 저장해버리면 고양이한테 생선을 맡겨놓는 격입니다. 암호화의 종류암호화는 저장을 할 때, 복호화는 불러올 때 사용합니다.이때 비밀번호로 암호화 또는 복호화를 하는데 이 비밀번호 키가 같으면 대칭 키 암호화라고 합니다.반대로 암호화 할 때의 키와 복호화 할 때의 비밀번호 키가 다르면 비대칭 키 암호화라..
-
유니티 셰이더그래프 UI에서 화면전환하기 / Unity Shadergraph UI Transition유니티 2023.08.31 15:01
트랜지션 (Transition)이란?맵을 이동하거나 로딩이 필요할 때 뚝 끊기는 부자연스러운 상황을 숨기기 위해화면을 가려서 장면을 전환하고 싶을 때 트랜지션 효과가 유용하게 사용됩니다. 화면전환 애니메이션을 UI위에서 작동하도록 셰이더 그래프로 만들어 봅시다. 셰이더 그래프 Lit Shader Graph를 생성하고 참조하고 있는 머테리얼을 만듭니다.트랜지션이 될 이미지를 생성하고 캔버스의 맨 아래로 내려 맨 앞에 보이게 합니다. 캔버스(Canvas)의 정렬 순서단일 캔버스인 경우하이어라키 상 아래로 갈수록 앞쪽에 보입니다.다중 캔버스인 경우한 캔버스 안에는 하이어라키 상 아래로 갈수록 앞쪽에 보입니다.캔버스끼리는 Canvas 게임 오브젝트를 선택하고 Canvas 컴포넌트의 Sort Order 숫자..
-
유니티 셰이더그래프 그라데이션 스카이박스 만들기 / Unity Shadergraph Gradient Skybox유니티 2023.08.31 13:50
그라데이션 스카이박스를 쓰는 이유?가벼운 3D 게임을 만들 때 하늘을 봤는데 기본으로 제공된 유니티 스카이박스를 쓰는것보다 예쁜게 낫겠죠?그래서 가벼운 3D 게임에는 게임 풍에 맞는 그라데이션 스카이박스를 사용하면 예쁩니다. 셰이더 그래프셰이더 그래프를 생성 후 해당 노드를 작성합니다.Graph Inspector의 Material을 Unlit, Surface Type을 Transparent로 설정합니다. Window - Rendering - Lighting - Environment - Skybox Material에해당 셰이더 그래프를 담은 머테리얼을 새로 만들어 넣습니다.