C#

dev bourgeois·2023년 11월 15일

Unity VR/AR

목록 보기
1/8
post-thumbnail

생성 스크립트

프로그램은 클래스 단위로 관리됨
클래스명 = 스크립트

using System.Collections;
using Sytem.Collectons.Generic;
// 데이터를 저장하는 형을 제공
using UnityEngine;
// 유니티가 동작하는데 필요한 기능 제공

public class Test : MonoBehaviour
{
void Start() // 한 번만 실행
{

}

void Update() // 프레임마다 반복해서 실행
{

}

}

스크립트 기본 개념

*프레임

-게임 화면은 영화/애니메이션과 같이 그림 한 컷을 플립북 방식으로 표시함

-FPS: 1초에 표시되는 매수

➡️ Update 메소드가 1초 동안 불리는 횟수

-영화는 1초에 24, 게임은 1초에 60프레임

-60FPS로 설정해도 사용자 입력이 달라지거나 시스템 부하 등이 달라지면 프레임 간 시간이 1/60초보다 빠르거나 느려질 수 있음

Start 메소드는 한 번 실행, Update 메소드는 프레임마다 반복해서 실행됨


변수

float → float height = 160.5f;
// 소수 뒤에 f를 붙이면 float, 그렇지 않으면 double형


제어문

if, for문

*변수 범위


배열

int[] points = new int[5];

points.length


메서드(함수)

start, update 함수와 별개로 써준다

-인수, 반환값




클래스

-메소드는 처리를 모아둔 것, 클래스는 메소드와 변수를 모아둔 것
-유니티로 게임을 만들려면 플레이어, 적, 무기, 아이템 등 물체마다 그 움직임을 정의하는 스크립트를 작성

  • 물건 단위로 작성!!
  • 클래스를 사용해서 관계가 있는 변수, 메소드를 합쳐서 스크립트 관리

-작성한 클래스는 데이터형으로 사용할 수 있다

  • Player 클래스 → Player형 사용 가능

myPlayer.멤버 변수명
myPlayer.멤버 메서드


클래스 객체 = new 클래스(); 만들어주고

객체.메소드();로 호출


*접근 수식자

*this 키워드

-자신의 인스턴스를 가리키는 키워드
-this 안붙여도 자기 클래스의 멤버 변수 사용 가능하지만, 동일 이름 로컬 변수 있을 경우, 로컬 변수값이 우선되는 오류 발생


Vector 클래스

-float형의 x, y, z 값 3개

-C#에는 이 값들을 하나로 합쳐 다룰 수 있는 Vector3 클래스가 내장

-2D 게임용에는 float형 x, y값을 갖는 Vector2 클래스가 있음

*Vector

-Vector3 클래스에는 x, y, z 멤버 변수가 있고 Vector2 클래스에는 x, y 멤버 변수가 있음

-x=3, y=5 → 오브젝트가 (3, 5) 위치에 배치



-startPos에서 endPos로 향하는 dir 벡터

벡터 거리 → magnitude 변수

float len = 벡터.magnitude;


*Vector 클래스 응용

-가속도, 힘, 이동 속도 같은 물리 수치로 사용 가능

ex) 플레이어의 이동 속도

Vector2 speed = new Vector2(2.0f, 0.0f)

speed를 플레이어 좌표에 매 프레임마다 더해 프레임마다 플레이어를 x축 방향으로 2씩 이동 가능

0개의 댓글