728x90
반응형

Game Development, 게임개발/개발 98

유니티에서 Static이란 [Unity]

static.. Dynamic의 반대로 알고 있다. 정적을 의미한다. 즉, 런타임 이전에 훨씬 이전에 수행되어 만들어진다는 뜻으로 알고 있다. 사실 선언했을 때 만들어진다. ** 메모리에서의 Data에 저장된다. 그럼 유니티에서 Static의 의미를 알아보자 static은 Data 영역에 저장되기 때문에 변수를 수정하거나, 읽을 때, 클래스 객체를 만들 필요가 없다. 아무리 객체를 만들더라도 static은 유일하게 존재한다. using UnityEngine; using System.Collections; public class Enemy { //Static variables 은 모든 클래스의 인스턴스와 공유된다. public static int enemyCount = 0; public Enemy() { ..

C#에서의 삼항 연산자 Ternary Operator [Unity]

많이 쓰려면 많이 쓸 수 있지만 몰라서 못쓰는 경우가 더 많은 것 같아서 알아보았다. if, else문을 하나로 합쳐서 쓰는 것과 비슷하다. "Boolean expression" + ? + "True, value" : "False, value" 만약 이렇게 쓰지 않는다면 if (Boolean condition){ "참일 때 값" } else{ "거짓일 때 값" } 이렇게 되었을 것이다. 직관적으로 이해하기 쉽게 도와주는 연산자이다. using UnityEngine; using System.Collections; public class TernaryOperator : MonoBehaviour { void Start () { int health = 10; string message; //This is an ..

Linear Interpolation, 선형 보간법

이 방법을 이전에 오브젝트를 움직이게 할 때 써먹었다. 하지만 움직이게 하는 것 뿐만 아니라 모든 것에 쓸 수 있기에 한 번 더 복습하고 가려고 한다. 알아보자 어떠한 value 2개를 가지고 그 사이를 선형보간법을 이용하는 것이다. Lerp (X, Y, t) 함수의 원형은 이렇게 생겼다. X,Y 가 value가 되는 것이고 t가 0~1 의 값을 가진다. ?? 뭐야 보간이 뭔데? 보간이란 알고 있는 값으로, 알려진 값 2개의 사이에 위치한 값을 추정하는 것을 말한다. 즉, 알고 있는 값으로 근사 함수를 만들어 값을 추정하는 것이다. 아래와 같은 식으로 추정한다. 그럼 t는 왜필요한건데?? t가 d1,d2값을 정해준다. x1,x2의 거리를 1로 보고 t가 비율을 정하는 것이다. 쉽게 말하면 그라데이션의 중..

Start()와 Awake()의 차이 [Unity]

1. Awake() Awake()는 일반적으로 게임이 시작되기 전에, 모든 변수와 게임의 상태를 초기화하기 위해서 호출된다. 즉, start보다 먼저 호출된다. 다행히 모든 오브젝트가 초기화되고 호출되기 때문에 GameObject.FindWithTag를 이용해서 해당 게임 오브젝트를 요청하거나, 다른 오브젝트와 안전하게 연동해서 사용할 수 있다. 즉, 초기화시키기에 이렇게 알맞은 것이 없다. **단, 각 게임오브젝트의 Awake()는 랜덤 순서로 실행되기 때문에 스크립트간의 참조(reference)를 설정하기 위해 Awake를 사용하고, 정보를 보내고 받는 경우에는 Start를 사용해야 한다. 2. Start() Start()는 Update메소드가 처음 호출되기 바로 전에 호출되고 해당 Behaviour..

C#에서 쓰이는 약간 다른 Loop 활용 [Unity]

For, While은 어디서 한 번쯤 들어봤을 것이다. 하지만 각 언어마다 특징이 있듯이 C#에도 약간 좀 다른 특징이 있다. 알아보자 1. Do, While 문 using UnityEngine; using System.Collections; public class DoWhileLoop : MonoBehaviour { void Start() { bool shouldContinue = false; do { print ("Hello World"); }while(shouldContinue == true); } } 일반적으로 While문을 돌릴 때 행동하기 전에 조건이 True인지 체크를 하는데 얘는 우선 돌리고 True인지 체크를 한다. 예를 들면 설거지를 하고 있는데 남은 접시가 0보다 크면 설거지를 해야한..

다른 클래스 변수 접근(public: x / member variable(Property): o) [Unity]

우리는 접근제한자, Access Modifier를 이용해서 다른 변수에 접근하고는 했다. 하지만 여기서 다른 방법을 제시한다. 바로 member variable로 접근하게 하는것이다. ++ Property라고도 불린다. ** 클래스의 구성요소는 Property와 Method라고 해도 무방하다. 알아보자 간단하다. 이 코드를 보자 using UnityEngine; using System.Collections; public class Player { //멤버 변수가 필드같이 다뤄지는 것이다. private int experience; public int Experience { get { //Some other code return experience; } set { //Some other code exper..

Time.deltaTime의 의미 [Unity]

유니티에서 왜 시간을 안쓰고 deltaTime을 쓰는지? 궁금해 하는 사람이 있을 것 같다. 아니라고? 궁금해할 것이다. 아니면 어차피 이 글을 안봤을테니 ++사실 Time엔 종류가 무지하게 많다. 그건 나중에 정리할 생각이다. 정식으로 소개한다. public static float deltaTime ++ float 형식을 가지고 있다. The completion time in seconds since the last frame ->??? 무슨 말이지?? 정확하게 말하자면 This property provides the time between the current and previous frame 이전프레임과 현재프레임 간의 차이 (delta)를 뜻한다. ? 그래서 몇초인데? FPS가 60이라면 1초당 ..

Collider에 대한 모든 것(기본) [Unity]

이번 글에서는 Collider의 종류와 쓰임 보다는 Collider가 무슨 역할을 하며 왜 필요한지.. 어떤 property를 가지고 있는지를 알아볼 것이다. 도대체 무엇인가? ++Unity.Engine 클래스에 포함되어 있다. RigidBody가 나온다면 항상 따라오는 것이 있다. 바로 Collider다 ++영어단어 뜻이 Collide with, 으로 많이 쓰이듯이 "충돌"을 의미한다. 즉, 충돌에 대해, 접촉에 대해, 모든 것을 관리한다고 볼 수 있다. 다시 말해서 물리적인 상호작용에 관여한다고 보면 된다. 어떤 속성을 가지고 있는데?? 그냥 충돌하면 그게 끝 아니야?? 사실 우리가 당연하게 여기는 모든 행동 안에는 물리적인 법칙이 끊임없이 적용되고 있다. 유니티는 조금이라도 자연스럽게 만들고자 여러..

용어 정리

Real-Time (실시간) how quickly an image is rendered (or displayed) on the screen. 얼마나 이미지들이 실제로 보는 화면(스크린)에 빨리 반영되느냐? 를 말한다. 스타크래프트 같이 RTS라는 실시간 전략 시뮬레이션 게임 장르가 있다. 얘는 우리가 우클릭만 하면 유닛들이 바로바로 움직여서 화면에 움직이는 것을 알 수 있다. 그렇다면 개발자 입장에서 실시간은 무엇이냐? 게임을 업데이트할 때 업데이트에 이상이 있거나 잘 작동하는지 알아보려면 우리는 실행시켜서 확인을 해봐야 한다. 하지만 그 작업을 맨날 처음부터 우리가 수정했던 부분까지 확인하려면 시간이 정말 오래걸린다. (실제로 지금도 그렇게 하고는 있지만 컴퓨터 속도가 빨라졌다.) 그렇게 빨라져서 수정..

AddForce에 대한 모든 것(+RelativeForce) [Unity]

Rigidbody에서 엄청 많이 쓰이는 AddForce를 알아보자 어떠한 form을 가지고 있냐? 2가지 형태가 있다. 하지만 비슷한 메커니즘을 가진다. public void AddForce(Vector3 force, ForceMode mode = ForceMode.Force); public void AddForce(float x, float y, float z, ForceMode mode = ForceMode.Force); 쉽게 말하면 AddForce(방향*힘 값, 힘의 종류) 라고 보면 된다. 무엇을 하는 메서드냐? 말 그대로 AddForce다. Rigidbody에게 힘을 전달해준다. (하지만 모든 Rigidbody가 아닌 Active 상태일 때만 전달된다.) **이러한 Force calculatio..

728x90
반응형