728x90
728x90
전역변수 & 지역변수 C# 스크립트 작성 시 클래스 안에 다양한 변수를 설정한다. 하지만 때때로 함수가 변수들을 읽지 못해 유니티 에디터에서 컴파일 에러가 뜨기도 하고, 이상한 버그들도 발생하곤 한다. 개발할 때 매우 기본이 되는 내용이지만 오히려 모르고 넘어가는 경우가 많기에 때문에, 전역변수와 지역변수에 대해 기본적인 개념을 꼼꼼히 짚어보도록 하겠다. 먼저, 한 클래스 안에서 동일한 이름의 지역/전역 변수가 존재한다면 지역 변수가 전역 변수보다 먼지 인지된다. 그리고 전역 변수는 지역 변수를 모르지만, 지역 변수는 전역 변수를 알고 있다. 이는 컴파일러 실행과 관련되어 설명할 수 있는데 우리가 유니티 에디터에서 플레이 버튼을 누르면 컴파일러는 "코드 -> static(정적 메모리 공간) -> stac..
GameManager 게임매니저 클래스 https://docs.unity3d.com/Packages/com.unity.testtools.codecoverage@0.3/api/Global%20Namespace.GameManager.html Class GameManager | Code Coverage | 0.3.1-preview docs.unity3d.com 유니티에서는 전체 게임의 실행을 담당하는 GameManager 클래스를 지원하고 있다. GameManager 클래스와 관련해서 몇가지 공부했던 내용을 정리하려고 한다. 전역 변수 선언 과정에서 다음과 같은 내용을 확인할 수 있다. [HideInInspector]는 어트리뷰트 종류 중 하나로, 한 칸 바로 밑에 있는 변수를 숨기는 역할을 한다. 마찬가지로..
스마트폰 환경에서 AR 나무쌓기 게임을 만들었다. AR 개발을 위해 기본적으로 유니티 세팅을 해주면 된다. 패키지 매니저 - 유니티 레지스트리에서 AR Foundation을 설치해주고, 프로젝트 세팅에서 XR Plug -in Management - ARCore을 설치해준다. 프로젝트 세팅 - Player의 Grapics APIs에서 Vulkan을 삭제, Minimum API Level에서 Android 7.0으로 변경해 준다. 그리고 2019년 구글 정책의 변경으로 64비트 앱만 호환가능하기 때문에 Configuration의 Scripting Backend를 IL2CPP로 변경, ARM64를 체크해주면 된다. 마지막으로 빌드 세팅에서 Andoroid로 Switch Platform해준다. 프로젝트 개발 순..
2D 화면 상 배경 이미지 스크롤 방법 2D 게임을 진행하다보면 배경이 무한 스크롤되는 것을 종종 확인할 수 있다. 유니티에서는 다음 방법으로 배경 스크롤을 간단하게 구현할 수 있다. 배경으로 쓸 2D 소스들을 임포트해주었다. 총 7개의 배경이 간격을 두고 겹쳐보이게 한 후 한쪽 방향으로 흐르게 만들 것이다. Material을 7개 생성하고 Shader는 Unlit/Transparent로 변경 후 임포트한 배경 Texture을 매핑해주었다. 그리고 씬 뷰에서 Quad를 7개 만들고 Materials에 각각 연결해 준 뒤 하늘 - 구름 - 산 - 돌 순으로 위치를 조정(Z값 이동)해주어 게임 뷰에서는 겹쳐보이도록 만들었다. 그리고 BGScroller라는 빈 오브젝트를 생성 후 7개의 배경을 자식화한 뒤 B..
마찰력을 활용한 게임 요소 구현 using System.Collections; using System.Collections.Generic; using UnityEngine; public class BoxState : MonoBehaviour { public PhysicsMaterial2D slopeMaterial; private Rigidbody2D boxRigidbody2D; private float boxMass = 0f; private float gravity = 0f; private float friction = 0f; private float angle = 0f; void Start() { boxRigidbody2D = GetComponent(); boxMass = boxRigidbody2D.m..
Addforce를 활용한 게임 요소 구현하기 충격력(Force) : 질량 * 거리 / 시간^2 충격량(Impulse) : 질량 * 거리 / 시간 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ForceController : MonoBehaviour { private Rigidbody boxRigidbody; private float movePower = 5f; void Start() { boxRigidbody = GetComponent(); } private void FixedUpdate() { //Impulse는 1초동안 가해진 힘의 합 //FixedUpdate의 경우 0.02초동안 스..