728x90
728x90
전역변수 & 지역변수 C# 스크립트 작성 시 클래스 안에 다양한 변수를 설정한다. 하지만 때때로 함수가 변수들을 읽지 못해 유니티 에디터에서 컴파일 에러가 뜨기도 하고, 이상한 버그들도 발생하곤 한다. 개발할 때 매우 기본이 되는 내용이지만 오히려 모르고 넘어가는 경우가 많기에 때문에, 전역변수와 지역변수에 대해 기본적인 개념을 꼼꼼히 짚어보도록 하겠다. 먼저, 한 클래스 안에서 동일한 이름의 지역/전역 변수가 존재한다면 지역 변수가 전역 변수보다 먼지 인지된다. 그리고 전역 변수는 지역 변수를 모르지만, 지역 변수는 전역 변수를 알고 있다. 이는 컴파일러 실행과 관련되어 설명할 수 있는데 우리가 유니티 에디터에서 플레이 버튼을 누르면 컴파일러는 "코드 -> static(정적 메모리 공간) -> stac..
클래스 상속을 이용한 CameraShake 구현 방법 using System.Collections; using System.Collections.Generic; using UnityEngine; // 카메라 셰이크를 위한 설정 정보를 기억할 구조체 [System.Serializable] public struct CameraShakeInfo { // 진폭 public float amplitude; // 사인파 진동 빠르기 public float sinSpeed; } // 모든 카메라 셰이크 클래스의 부모 클래스 public class CameraShakeBase { // 카메라 초기 위치 기억변수 protected Vector3 originPos; // 카메라 셰이크 초기화 함수 public virtual..
유니티 애니메이션 실행 오류 유니티에서 애니메이션을 실행하다보면 몇가지 문제가 발생한다. 가장 대표적으로 Enemy가 Player를 공격하는 애니메이션이 실행되고, 피격 시 데미지UI(빨강) 코루틴이 반복 실행되는 상황에서 정확한 피격 타이밍과 코루틴 함수 호출 시점이 다를 수 있다. 다시 말해, Enemy가 발차기 모션을 실행하기도 전에 피격UI 코루틴이 엇박자 타이밍으로 실행되는 것이다. 우리는 정확하 발차기가 실행되었을 때 UI 코루틴을 실행해야 어색하지 않은 애니메이션 동작 상황이 완성될 것이다. 이런 경우, 애니메이션 실행 key frame에서 event 함수를 호출해줌으로서 문제를 해결할 수 있는데 다음 2가지 방법을 주로 사용한다. 원본 애니메이션 데이터를 활용하여 오류 해결하기 애니메이션 ..
Layer와 Tag 비교 게임 오브젝트를 비교하는 방법은 Layer과 Tag 설정이 있다. Layer는 총 32개로 정의되어 있다. 32라는 숫자는 int형 즉, 비트형을 가져온다. 여기서 비트 연산으로 layer 처리를 해주는 개념으로 이해하면 된다. 비트형이기 때문에 0과 1로 입력/출력 값을 결정해준다. Tag와 Layer은 다음과 같이 사용할 수 있다. 전부 다 같은 동작이 실행되고 각 코드마다 약간의 성능차이는 있다. if(collision.gameObject.CompareTag("Player")) // 전부 다 같은 개념 if(collision.gameObject.name.Contains("Player")) if(collision,gameObject.tag == "Player") if(coll..
데이터 저장 로컬 저장 : 내 pc(하드디스크) -> File로 저장 원격 저장 : Server를 통해서 DB(database)에 저장 데이터베이스는 IDC(데이터 센터)의 저장소에 저장 IDC에 저장은 유지보수 관점에서 한계가 있다( 예를 들어 동접 수가 갑자기 늘면 능동적으로 대응하기 힘듦) 이를 보완하기 위해 클라우드를 사용해서 원격으로 데이터를 저장한다. 데이터를 저장할 때 DB에 바로 Push할 수 없고 Server를 통해 요청한다. Server : FrontEnd / BackEnd로 나뉜다. 로컬 저장 : File로 저장하겠다는 뜻(txt. excel, json, xml 등 어떤 양식이든 상관 없음) 유니티에서 제공하는 대표적인 데이터 저장 방법은 PlayerPrefs가 있다. 기본적으로 컴퓨..
Call by Value & Call by Reference 비교 자료형 타입 비교 유니티와 C# 프로그래밍에서 사용되는 Value 타입과 Reference 타입은 다음과 같다. 기본 자료형(Value type) : int, float, string, long, short, byte, array, Vector, Struct, enum 등 참조 자료형(Reference type) = GameObject, Class, Instance 등 Call by Value (값에 의한 호출) 함수가 호출될 때 메모리 공간 안에는 임시 공간이 생성된다. 마찬가지로 함수가 종료되면 임시 공간은 사라진다. 함수 호출 시 전달되는 변수 값을 복사해서 함수의 인자로 전달한다. 복사된 인자는 함수 안에서 사용하는 지역변수이다. ..