반응형

[Unity] 109

[C#] 구조체(struct)

1. 구조체란? 2. 구조체 구현 예시 3. 구조체와 클래스의 차이 1. 구조체란? : 사용자 정의 데이터로, 값 형식입니다. 구조체를 정의하려면 struct 문을 사용합니다. *구조체의 특징 (C#에서의 구조체는 C/C++의 구조체와 다른 점이 존재) - 메서드, 필드, 속성 등을 가질 수 있습니다. - 구조체는 다른 클래스를 상속받을 수 없습니다. - 값 타입의 데이터로, new를 선언할 필요 없이 바로 사용 가능합니다. 2. 구조체 구현 예시 struct Student { public string name; public int age; public Student(string _name, int _age) { name = _name; age = _age; } }; public class MyStruc..

[Unity]/[C#] 2022.05.16

[C#] 인터페이스

1. 인터페이스란? 2. 인터페이스의 특징 3. 인터페이스와 추상클래스의 차이점 1. 인터페이스란? : 상속관계에 있어야 하는 클래스입니다. 모든 구현은 하위 클래스에서 이루어지며, 추상클래스와 유사하지만 다중상속이 가능하다는 점에서 차이점이 있습니다. C# 클래스가 인터페이스를 갖는 경우, 인터페이스의 모든 멤버에 대한 구현을 제공해야 합니다. 2. 인터페이스의 특징 - 구현이 없고, 형식만 포함합니다. 모든 구현은 하위에서 이루어집니다. - 다중 상속이 가능하다는 점에서 추상클래스와 차이가 있습니다. - 상속만 가능하고 new 키워드를 써 인스턴스로 생성하는 것은 불가능합니다. - 이벤트, 인덱서, 메서드, 속성을 포함합니다. 특히 메서드 부분을 많이 이용합니다. - 접근한정자를 명시하지 않아도 기본..

[Unity]/[C#] 2022.05.15

[C#] 메모리(+ 가비지)

1. C# 메모리 구조 2. C# 메모리 관리 1. C# 메모리 구조 메모리의 영역에는 4가지가 있습니다. Stack 영역 지역 변수, 매개 변수를 저장. 컴파일 시점에 크기를 할당하는 정적 할당을 사용 Heap 영역 사용자 관리 영역. 사용자 정의에 의해 할당된 메모리를 저장하거나 해제하는 동적 할당을 사용 Data 영역 전역 변수, static 변수를 저장. 컴파일 시점에 크기 할당. Code 영역 소스 코드, 기계어로 제어되는 메모리 영역. 크게 스택 영역과 힙 영역으로 나뉘는데요, 스택영역은 관리되지 않는 공간, 힙영역은 관리가 되는 공간입니다. * 관리 = 사용하지 않는 메모리를 스스로 해제하고, 다른 메모리가 올라갈 수 있게 하는 것. 이때, 메모리를 정리하는 일을 하는 것이 가비지 컬렉터입니..

[Unity]/[C#] 2022.05.13

[Unity] 입사각, 반사각을 구하는 방법

입사각, 반사각을 구하는 방법을 알아보겠습니다. //입사벡터 Vector2 incidentVector; //충돌할 면의 벡터 Vector2 collisionVector; //충돌한 면의 벡터를 각도로 변환 float collisionAngle = Mathf.Atan2(collisionVector.y, collisionVector.x) * 180f / Mathf.PI; //입사벡터를 각도로 변환 flot incidentAngle = Vector3.SignedAngle(collisionVector, incidentVector, -Vector3.forward); //반사할 벡터의 각도를 구함(충돌한 면의 벡터 기준) float reflectAngle = incidentAngle - 180 + collision..

[Unity]/[Unity] 2022.05.11

[Firebase] 이슈 : Could not find a working python interpreter.

유니티에 파이어베이스 SDK를 추가해줬더니 다음과 같은 이슈가 발생했습니다. Could not find a working python interpreter. Please make sure one of the following is in your PATH: python python3 python3.8 python3.7 python2.7 python2 비주얼 스튜디오에서 파이썬 interpreter를 추가해주면 됩니다. 아래 링크에서 파이썬을 다운받아줍니다. https://www.python.org/downloads/ Download Python The official home of the Python Programming Language www.python.org PATH에 추가하기에 체크하고 다운해줍니다..

[Unity] 2022.04.27

[Firebase] Firebase Database (2)

이번 포스팅에서는 지난 포스팅에 이어 Firebase의 RealTime Database를 유니티로 어떻게 불러오고 저장하는지 간단한 방법을 알아보겠습니다. 1. Firebase의 RealTime Database 불러오기 2. Firebase의 RealTime Database에 데이터 저장하기 * 시작 전에! 데이터베이스 규칙 탭에서 읽기, 쓰기를 각각 true로 설정해줘야 접근이 가능합니다! 1. Firebase의 RealTime Database 불러오기 예시 데이터로 Firebase RealTime Database에 아래와 같이 데이터를 입력했는데요, 표시한 데이터를 유니티로 불러와보도록 하겠습니다. using Firebase; using Firebase.Database; using Firebase.E..

[Unity] 2022.04.26

[Firebase] Firebase Database (1)

1. Firebase 란? 2. Firebase에 Database 만들기 3. Unity 프로젝트에 Firebase 구성 파일 및 Firebase Unity SDK를 추가 * 이후의 사용 방법과 코드는 다음 포스팅에서 이어서 1. Firebase 란? Firebase란 구글(Google)이 소유하고 있는 모바일 애플리케이션 개발 플랫폼입니다. 아래와 같은 유용한 기능들을 제공하기 때문에 모바일 게임에서 정말 많이 선택되는 도구 중 하나입니다. * 앱 개발 기능 인증(Authentication): 사용자 로그인 및 ID 관리 클라우드 함수(Cloud Functions): 서버 없이 이벤트 위주로 동작하는 백엔드 클라우드 파이어스토어(Cloud Firestore): 클라우드에 호스팅 된 실시간의 비관계형(N..

[Unity] 2022.04.24

[Unity] Error Unity AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.games.Games

프로젝트 셋팅에 있는 Player - Publishing Settings - Minify - Release에서 Proguard를 사용했더니 다음과 같은 에러가 logcat에 뜨면서 구글 플레이 서비스에 로그인이 되지 않습니다. AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.games.Games 구글링을 해보니 Proguard에서 난독화한 후에 외부 라이브러리를 사용할 때 문제가 된다고 합니다. Proguard 를 끄지 않고, 관련 플러그인을 예외처리해주면 문제가 해결된다고 하니 해보겠습니다. 1. 유니티 내에서 Proguard 사용자 설정을 바꾸기 Player Settings - Player - Publishi..

[Unity]/[Unity] 2022.04.04

[Unity Admob] 유니티에 애드몹을 추가한 후, 빌드 이슈 (feat. Gradle build failed)

유니티 2019.4.36f1 버전에 구글 애드몹 v7.0.0을 추가한 후 빌드하려 했더니 다음과 같은 메시지가 나오면서 빌드가 안 되는 이슈가 발생했습니다. CommandInvokationFailure: Gradle build failed. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':launcher:processReleaseResources'. > Android resource linking failed error: unexpected element found in . 확인해보니 안드로이드 11 관련 기능이 유니티에서 세팅된 gradle의 버전에 추가되지 않아 생기는 이슈였습니다. 해결방법은..

[Unity] 2022.04.02

[Unity] UI터치와 게임 화면 터치 분리해주는 방법

화면을 터치해서 게임을 진행하는 방식일 때, 간혹 버튼 등의 UI창만 터치해야하는데 화면을 터치한 것으로 동시에 인식하는 경우가 있습니다. 이럴때는 다음과 같은 분리 작업이 필요합니다. 1. 화면 터치와 분리하고 싶은 UI Image의 Raycast Target이 켜져있는지 확인. 2. 화면터치 스크립트에 다음과 같이 코드 작성 if(Input.touchCount > 0) { if(EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) return; //UI 터치가 감지됐을 경우 return //여기서부터 화면 터치 코드 } * 단, Input.touchCount는 마우스 클릭은 감지하지 않기 때문에 유니티 내에서 테스트하는 것은..

[Unity]/[Unity] 2022.03.19
반응형