반응형

개발/유니티 38

유니티 AOS 빌드 시 나타나는 에러 정리

최초 작성일 : 24.03.05 수정일 : X.X.X AOS를 빌드하면서 다음과 같은 에러들이 나타났는데, 이 때에 어떻게 해결했는지를 까먹지 않고 정리하기 위해 작성한다. 그래야 나중에 나도 혹시 까먹으면 참고하기 위해... 🤣 나의 해결 과정 순서 : 첫 빌드 시 에러는 1, 2, 4가 떴었으며 1을 해결하니 3, 5가 나타났다. 에러 3번 같은 경우는 내 해결범위 안을 벗어나는 것 같아 에러 5번을 해결하고자 하였으나 점점 일이 커지는 것 같았다. 따라서 상황을 전부 롤백하여 에러 4를 해결하였더니 모든 것이 완벽하게 동작하였다. 😎 에러 1. AndroidManifest 파일 내 퍼미션 에러 에러 전문 : uses-ermission#android.permission.READ_EXTERNAL_STO..

개발/유니티 2024.03.04

뒤끝 GPGS V2 관련 SDK 전환 시, Xcode 빌드 시 나타나는 에러

https://community.thebackend.io/t/gpgs-v2-id/6908 GPGS V2 지원 및 구글 차세대 플레이어 ID 정책 관련 긴급 안내 안녕하세요, 게임 서버 뒤끝입니다. 2024년 3월부터 적용되는 차세대 플레이어 ID의 강제 의무화와 관련하여 뒤끝에서는 2월 27일 정기 업데이트를 통해 GPGS V2 를 지원할 예정입니다. GPGS V1 => V2 이 community.thebackend.io 24년 2월까지 구글에서 현재 서비스 중인 GPGS V1이 3월부터 V2로 업데이트가 된다. 이에 따라 부득이하게 현재 라이브 서비스 중인 게임의 뒤끝 SDK를 업데이트 해주었다. 그러나 위 링크에서 알려주는 '뒤끝 구글로그인 SDK' 링크로 이동해 뒤끝에서 제공하는 유니티 패키지를 설..

개발/유니티 2024.03.04

프리팹 Original Prefab, Prefab Variant 차이

이미 프리팹으로 만들어진 오브젝트를 가지고 다시 프리팹으로 만드려고 한다면 위와 같은 다이얼로그가 뜬다. Original Prefab 지금 자기 자신의 모습 그대로를 바탕으로 별개의 새로운 프리팹을 만든다. Prefab Variant 자기 자신을 찍어냈던 그 프리팹을 상속받는 새로운 프리팹으로서 만든다. 추후 오버라이드도 할 수 있고 새로운 기능도 덧붙일 수 있되, 기존의 프리팹 성질은 다 물려 받는 새로운 자식 프리팹을 생성하는 것과 마찬가지다.

개발/유니티 2024.01.10

이벤트 주도적 프로그래밍

게임을 개발하다 보면 수많은 이벤트들을 관리해야 한다. 당장 아이템을 착용하여 공격력이 올라간다고 해도, 현재 공격력에 아이템의 공격력 계수를 더해 처리해야 한다. 또한 시야 내 적군이 있는지, 체력이 떨어지는지 등 다양한 이벤트 등이 존재한다. 그렇다고 이 모든 항목들을 다 프로퍼티로 하나하나 구현한다고 하는 것은 말이 안된다. 왜냐하면 경우의 수가 너무나도 많기 때문이다. 따라서 우리는 이벤트를 통해 프로그램을 관리할 필요가 있다. 이벤트 주도적 프로그래밍이라는 글을 포스팅하신 분이 있는데, 글을 너무 잘 쓰셔서 해당 링크로 대체한다. https://daekyoulibrary.tistory.com/entry/Unity-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84..

개발/유니티 2023.06.19

유니티 무한 스크롤 구현하는 방법

깔끔하다. NHN에서 직접 개발하고 무료로 배포까지 하는 'Game Package Manager'를 사용하면 된다! 링크는 아래와 같다. https://assetstore.unity.com/packages/tools/utilities/game-package-manager-147711 Game Package Manager | 유틸리티 도구 | Unity Asset Store Use the Game Package Manager from NHN Corp. on your next project. Find this utility tool & more on the Unity Asset Store. assetstore.unity.com 무한 스크롤 뿐만 아니라 다양한 로그, 에셋 관리, 프로파일러, 쉐이더 등 다양한..

개발/유니티 2023.06.18

유니티 치트엔진 방지하는 방법

게임 개발을 진행하다 보면 마주치는 문제가 있으니 바로 핵이다. 서든어택, 배틀그라운드와 같은 FPS 게임에서는 아주 판을 치고 다닌다. 아예 전문 안티치트 팀까지 있으니 핵에 문제점에 대한 얘기는 길게 하지 않겠다. 그러나 위의 게임과 달리 아주 작은 규모에 게임에서도 핵은 개발자와 회사에 막대한 피해를 준다. 또한 이렇게 규모가 회사들은 안티 치트 팀을 따로 꾸릴 수 없으므로 여러모로 골치아프다. 세상에 완벽은 없으므로, 결국 어떻게 막아도 뚫리긴 마련이겠지만 오늘은 이러한 고민을 함께 나눈 디시인사이트 인디 게임 개발 마이너 갤러리 글을 소개한다. https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=14597 치트엔진 방지하는법 간단히 - ..

개발/유니티 2023.06.18

유니티 프로파일러(Profiler)란?

1. 프로파일러란? Unity 프로파일러는 개발자가 Unity 프로젝트의 성능을 분석하고 최적화할 수 있도록 Unity 게임 엔진에서 제공하는 강력한 툴입니다. CPU 사용량, 메모리 할당, 렌더링 성능 등 프로젝트 성능의 다양한 측면에 대한 자세한 정보를 제공합니다. Unity 프로파일러는 성능 병목 현상을 파악하고 코드를 최적화하며 게임이나 애플리케이션을 원활하고 효율적으로 실행할 수 있도록 지원합니다. 성능이 좋지 않은 영역이 발견되면 게임이나 애플리케이션을 변경하여 성능을 개선할 수 있습니다. 예를 들어 씬의 오브젝트 수를 줄이거나 그래픽 렌더링에 더 효율적인 방법을 사용할 수 있습니다. 2. 프로파일러의 기능 성능 지표: Unity 프로파일러는 프로젝트와 관련된 다양한 성능 지표를 수집하여 표시..

개발/유니티 2023.06.12

유니티 인보크(Invoke)란?

1. 인보크란? Unity에서 '인보크(=호출)'이란 특정 함수나 메서드의 실행을 일정 지연 후 또는 지정된 시간 간격으로 예약할 수 있는 메서드를 말합니다. 인보크는 주로 다른 이벤트가 발생할 때까지 지연시키거나 일정한 간격으로 반복적으로 메서드를 실행할 때 자주 사용됩니다. 또한 복잡한 타이머나 수동 추적 없이도 나중에 코드를 실행할 수 있는 편리한 방법을 제공합니다. 2. 인보크의 종류 Unity의 인보크 기능은 크게 두 가지 방식으로 사용할 수 있습니다 지연된 실행: 인보크을 사용하여 특정 지연 시간 후에 함수나 메서드를 실행할 수 있습니다. 이 기능은 특정 동작을 수행하기 전에 지연을 도입하려는 경우에 유용합니다. 예를 들어, 몇 초 후에 화면에 메시지를 표시하거나 짧은 지연 후에 게임플레이 이..

개발/유니티 2023.06.12

유니티 UGUI란?

1. UGUI란? Unity UGUI(Unity 사용자 인터페이스)는 Unity 게임 엔진에 내장된 UI 시스템으로, Unity 프로젝트에서 대화형 사용자 인터페이스를 제작할 수 있는 다용도의 사용자 친화적인 프레임워크를 제공합니다. UGUI는 시각적으로 매력적이고 반응성이 뛰어난 사용자 인터페이스를 디자인하고 개발할 수 있는 다양한 UI 컴포넌트, 컨트롤, 기능을 제공합니다. 2. UGUI의 기능 UI 컴포넌트: UGUI는 사용자 인터페이스 제작을 위한 빌딩 블록 역할을 하는 다양한 UI 컴포넌트를 제공합니다. 이러한 컴포넌트에는 버튼, 텍스트 요소, 이미지, 슬라이더, 스크롤 뷰, 입력 필드, 드롭다운 메뉴 등이 포함됩니다. 각 구성 요소는 특정 디자인 요구 사항에 맞게 사용자 정의하고 구성할 수 있..

개발/유니티 2023.06.12

유니티 NGUI란?

1. NGUI란? Unity NGUI(차세대 UI)는 Unity 게임 엔진의 사용자 인터페이스(UI) 프레임워크를 말합니다. NGUI는 Unity 프로젝트에서 인터랙티브하고 시각적으로 매력적인 사용자 인터페이스를 제작할 수 있도록 향상된 커스터마이징 가능한 UI 기능을 제공하도록 설계되었습니다. 2. NGUI의 주요 기능 향상된 UI 기능: NGUI는 Unity에서 제공하는 표준 UI 컴포넌트를 뛰어넘는 다양한 UI 요소와 컨트롤을 제공합니다. 여기에는 드래그 가능한 패널, 스크롤 뷰, 그리드, 슬라이더, 버튼, 레이블 등과 같은 고급 기능이 포함됩니다. 이러한 요소를 쉽게 커스터마이즈하고 애니메이션을 적용하여 풍부하고 인터랙티브한 사용자 인터페이스를 제작할 수 있습니다. 스프라이트 기반 그래픽: NGU..

개발/유니티 2023.06.12

유니티 순운동학(Forward Kinematics, FK)란?

1. 순운동학이란? 유니티에서 포워드 키네마틱(FK)은 컴퓨터 그래픽과 애니메이션에서 관절의 회전을 기반으로 캐릭터의 엔드 이펙터(예: 손, 발 또는 기타 관절 부분)의 위치와 방향을 계산하는 데 사용되는 기법입니다. 여기에는 스켈레톤 계층 구조의 루트에서 엔드 이펙터까지 회전을 전파하여 월드 스페이스에서 최종 변형을 결정하는 작업이 포함됩니다. 또한 유니티에서 포워드 키네마틱(FK)는 트랜스폼 클래스를 사용하여 구현됩니다. Transform 클래스는 체인의 조인트 위치와 방향이 주어졌을 때 리지드 바디 체인 끝의 위치와 방향을 계산하는 다양한 메서드를 제공합니다. 2. 순운동학 동작 방식 유니티에서 포워드 키네마틱이 작동하는 방식은 다음과 같습니다. 스켈레톤 계층구조: 캐릭터의 스켈레톤은 뼈대 또는 조..

개발/유니티 2023.06.12

유니티 역운동학(Inverse Kinematics, IK)란?

1. 역운동학이란? 역운동학(IK)은 컴퓨터 그래픽과 애니메이션에서 캐릭터의 팔다리나 오브젝트를 원하는 위치와 방향으로 배치하는 데 필요한 조인트 각도를 계산하는 데 사용되는 기법입니다. Unity에서 역운동학은 원하는 엔드 이펙터 위치에 따라 조인트 회전을 자동으로 계산하여 보다 사실적이고 자연스러운 애니메이션을 제작할 수 있는 기본 제공 기능입니다. 일반적인 스켈레톤 애니메이션 시스템에서는 캐릭터 스켈레톤의 각 뼈에 고유한 회전이 있습니다. 캐릭터 애니메이션에는 이러한 뼈의 회전을 직접 지정하는 작업이 포함됩니다. 하지만 손이나 발과 같은 엔드 이펙터의 원하는 위치와 방향을 정의하고 시스템이 적절한 조인트 회전을 자동으로 계산하도록 하는 것이 더 직관적인 경우도 있습니다. 2. 역운동학의 작동방식 리..

개발/유니티 2023.06.12

유니티 스프라이트 아틀라스란?

1. 스프라이트 아틀라스란? Unity에서 스프라이트 아틀라스는 여러 스프라이트 이미지를 하나의 텍스처 아틀라스로 결합할 수 있는 기능입니다. 하나의 텍스처로 묶은 행위로 인해 GPU 리소스를 보다 효율적으로 사용할 수 있도록 합니다. 또한 아틀라스는 드로 콜 횟수를 줄이고 스프라이트 기반 그래픽의 메모리 사용량을 개선하여 렌더링 성능을 최적화하는 데 도움이 됩니다. 스프라이트 아틀라스에 스프라이트를 추가하면 낭비되는 공간을 최소화하는 방식으로 스프라이트가 아틀라스에 자동으로 패킹됩니다. 스프라이트 아틀라스 인스펙터에서 설정을 조정하여 스프라이트가 패킹되는 방식을 수동으로 제어할 수도 있습니다. 2. 스프라이트 아틀라스의 특징 스프라이트 패킹: Unity에서 스프라이트 아틀라스를 생성할 때 여러 개의 개..

개발/유니티 2023.06.12

월드 좌표계란?

1. 월드 좌표계란? Unity에서 월드 좌표계는 씬 내에서 게임 오브젝트의 위치 및 방향을 지정하는 기준이 되는 전역 좌표계를 말합니다. 모든 오브젝트에 일관되고 고정된 기준 프레임을 제공하며 위치, 회전, 스케일 등을 저장하는데 사용됩니다. 또한 전체 씬에서 공간 관계와 측정을 가능하게 합니다. 2. 월드 좌표계의 특징 데카르트 좌표계: Unity의 월드 좌표계는 세 개의 축을 사용하여 위치를 지정하는 데카르트 좌표계를 따릅니다: X축은 가로 방향, Y축은 세로 방향, Z축은 깊이 또는 앞/뒤 방향을 나타냅니다. 원점: 세계 좌표계의 원점은 X, Y, Z 축이 교차하는 지점(0, 0, 0)입니다. 모든 위치가 측정되는 기준점 역할을 합니다. 절대 위치: Unity의 게임 오브젝트에는 월드 좌표계에서 ..

개발/유니티 2023.06.10

로컬 좌표계란?

1. 로컬 좌표계란? Unity에서 로컬 좌표계는 씬 내의 특정 게임 오브젝트를 기준으로 하는 좌표계를 의미합니다. Unity의 각 게임 오브젝트에는 부모 게임 오브젝트 또는 월드 원점을 기준으로 위치, 회전, 배율을 정의하는 고유한 로컬 좌표계가 있습니다. 로컬 좌표계는 오브젝트의 이동과 회전을 계산하는 데도 사용됩니다. 2. 로컬 좌표계의 특징 위치: 로컬 좌표계에서 게임 오브젝트의 위치는 부모 게임 오브젝트 또는 월드 원점을 기준으로 한 게임 오브젝트의 위치를 나타냅니다. 위치는 세 가지 값을 사용하여 정의됩니다: X, Y, Z 좌표입니다. 회전: 로컬 좌표계에서 게임 오브젝트의 회전은 부모 게임 오브젝트 또는 월드에 대한 게임 오브젝트의 방향을 결정합니다. 회전은 오일러 각도(X, Y, Z 축을 ..

개발/유니티 2023.06.10

유니티 최적화 10가지 기법

유니티 최적화 10가지 기법입니다. 오브젝트 풀링: 오브젝트 풀링은 새로운 오브젝트를 생성하는 대신 기존 오브젝트를 재사용하는 기법입니다. 이를 통해 오브젝트 생성 및 소멸에 따른 오버헤드를 줄이고 성능을 개선할 수 있습니다. 세부 수준(LOD): 세부 수준은 카메라에서 멀리 떨어져 있는 오브젝트의 단순화된 버전을 사용하는 기법입니다. 이를 통해 렌더링해야 하는 폴리곤 수를 줄이고 성능을 개선할 수 있습니다. 오클루전 컬링: 오클루전 컬링은 카메라에서 숨겨진 오브젝트를 렌더링하지 않는 기법입니다. 숨겨진 오브젝트를 렌더링하지 않음으로써 렌더링해야 하는 폴리곤의 수를 줄이고 성능을 개선할 수 있습니다. 배치 렌더링: 일괄 렌더링은 여러 개체를 단일 드로우 호출로 결합하는 기법입니다. 이를 통해 렌더링 오버..

개발/유니티 2023.03.19

라이트 맵(Light Map)이란?

1. 라이트 맵(Light Map)이란? 유니티(Unity)에서 라이트 맵(Light Map)은 씬의 조명 정보를 저장하는 텍스처입니다. Unity에서 조명을 베이크하면 씬에서 정적 조명을 받을 수 있는 각 오브젝트에 대한 라이트맵이 생성됩니다. 라이트맵의 개념은 정적 오브젝트에 대한 조명 정보를 미리 계산하여 텍스처에 저장함으로써 씬에서 고품질 조명을 효율적으로 렌더링하는 데 사용됩니다. 씬이 렌더링되면 라이트맵이 오브젝트에 적용되어 조명을 시뮬레이션합니다. 2. 라이트 맵(Light Map)의 사용 다음은 Unity에서 라이트맵을 사용하는 기본 단계입니다: 3D 모델 또는 씬을 Unity로 생성하거나 임포트합니다. Unity의 조명 툴을 사용하여 씬에 조명을 추가합니다. Unity에서 조명을 베이크하..

개발/유니티 2023.03.17

드로우콜(DrawCall)이란?

1. 드로우콜(DrawCall)이란? 드로우콜은 Unity에서 오브젝트 또는 메시 세트를 화면에 렌더링하는 데 사용하는 렌더링 작업입니다. Unity가 씬을 렌더링할 때 오브젝트의 지오메트리, 오브젝트에 적용된 머티리얼, 기타 렌더링 파라미터 등 많은 데이터를 그래픽 카드에 전송해야 합니다. Unity가 이 데이터를 그래픽 카드에 전송할 때마다 이를 드로우콜이라고 합니다. Unity에서 씬의 각 오브젝트는 일반적으로 오브젝트의 모양을 정의하는 버텍스, 에지, 면의 모음인 메시로 표현됩니다. Unity는 메시를 렌더링해야 할 때 메시 데이터를 메시 렌더링에 사용된 머티리얼, 조명 설정 등과 같은 기타 정보와 함께 그래픽 카드에 전송해야 합니다. Unity는 그래픽 카드에 메시를 화면에 그리도록 지시하는 D..

개발/유니티 2023.03.13

유니티의 기본 메소드(Default Method)에 개념과 호출순서

Unity의 기본 메서드는 게임이나 애플리케이션을 실행하는 동안 특정 순서로 호출됩니다. 실행 순서는 Unity 버전에 따라 다를 수 있지만, 다음은 Unity의 기본 메서드가 호출되는 일반적인 순서입니다: Awake(): 이 메서드는 스크립트가 메모리에 처음 로드될 때 호출됩니다. 게임이 시작되기 전에 변수나 오브젝트를 초기화하는 데 사용됩니다. OnEnable(): 이 메서드는 오브젝트가 활성화되어 씬에서 활성화될 때 호출됩니다. 오브젝트가 활성화될 때 설정해야 하는 변수나 오브젝트를 초기화하는 데 사용됩니다. Start(): 이 메서드는 Awake() 및 OnEnable()이 호출된 후에 호출됩니다. 첫 프레임이 렌더링되기 전에 설정해야 하는 변수나 객체를 초기화하는 데 사용됩니다. FixedUpd..

개발/유니티 2023.03.08
반응형