유니티(Unity)
C# 기초
염두리안
2025. 4. 21. 14:42
728x90
반응형
C# 스크립트를 오브젝트에 드래그&드롭 하는 이유? 스크립트를 오브젝트에 적용하는 과정으로, 스크립트를 게임 오브젝트에 연결해 스크립트가 실행되도록 함(만약 연결이 안 됐다면 동작 X)
C# 스크립트 파일 기본형
// 1&2 : 데이터를 저장하는 형을 제공
// 3 : 유니티가 동작하는데 필요한 기능 제공
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 클래스명 정의(클래스명 = 스크립트명)
public class Test : MonoBehaviour
{
// 한 번만 실행
void Start()
{
}
// 프레임마다 반복해서 실행
void Update()
{
}
}
프레임 : 그림 한 컷 | 단위는 FPS
변수에 대해
- float형에 double형을 대입한다면? double형은 float형보다 값을 표현할 수 있는 범위가 넓음... 따라서 float형에 double형을 대입하면 float형에 들어가지 않는 범위는 버려짐 ~> 문제를 일으킬 수 있기 때문에 C#에선 float형에 dobule형 대입을 금지
- string형에 숫자를 대입한다면? 출력 결과는 같아보이지만, string형에 대입된 것은 '문자열'이기 때문에 계산할 때 사용할 수 없음! | string형에 int형 값을 대입하면 컴파일 오류 발생
- 정수끼리 나눗셈을 하면 소수점 이하가 버려져서 결과도 정수로 출력... 따라서 소수점까지 출력하고 싶다면, 처음에 1.0f를 넣어주면 됨
- float average = 1.0f * sum / points.Length;
- if문의 블록에서 정의한 변수의 범위 : 변수는 선언한 줄을 포함한느 중괄호 안에서만 사용할 수 있음(if문 안에서 선언한 변수는 if문 바깥에서 사용할 수 없다)
배열 선언
- 배열을 선언하고 이어서 new를 사용해 배열에 필요한 상자수를 지정해야 함
int array = new int[5];
메서드
반환값의 데이터형 메서드명(데이터형 인수, 데이터형 인수 ...)
{
메서드 처리;
return 반환값;
}
// 예시
int Add(int a, int b)
{
int c = a + b;
return c;
}
클래스 : 메서드와 변수를 모아둔 것 | 클래스 사용시 관계가 있는 변수와 메서드를 하나로 합칠 수 있어 스크립트 관리가 쉬움
- 접근 수식자
- public : 모든 클래스에서 접근 가능
- protected : 같은 클래스, 해당 클래스의 서브 클래스에서 접근 가능
- private : 같은 클래스에서만 접근 가능
- this 키워드 : 자신의 인스턴스를 가리키는 키워드... 이 코드상에선 자신의 인스턴스가 가진 power변수(Player 클래스의 인스턴스가 가진 power변수)를 나타냄
- public class Test : MonoBehaviour에서 :MonoBehaviour의 의미 : 상속의 의미로, 유니티의 MonoBehaviour 클래스의 기능을 Test에 집어 넣겠다는 의미
- MonoBehaviour : 게임 오브젝트를 구성하는 기본 기능을 멤버 변수와 멤버 메서드로 준비한 클래스... 따라서 게입 오브젝트에 붙여 실행하는 스크립트는 MonoBehaviour 클래스를 상속해야 함
class 클래스명;
{
멤버 변수 선언; // 클레스에서 사용한 변수
멤버 메서드 구현; // 클레스에서 사용한 메서드
}
// 예시
public class Player
{
private int hp = 100;
public void Attack()
{
Debug.Log(this.power + "데미지를 입혔다");
}
public void Damage(int damage)
{
this.hp -= damage;
Debug.Log(damage + "데미지를 입었다");
}
}
public class Test : Monobehaviour
{
void Start()
{
Player myPlayer = new Player();
myPlayer.Attack();
}
}
Vector
- Vector3 클래스 : float형의 x, y, z 값 세개를 사용 | 3D에 사용
- Vector2 클래스 : float형의 x, y 값 사용 | 2D 게임에 사용
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
Vector2 playerPos = new Vector2(3.0f, 4.0f);
playerPos.x += 8.0f;
playerPos.y += 5.0f;
Debug.Log(playerPos);
}
}
>> (11.00, 9.00)
아무래도 C, C++ 친척이라 그런지 문법이 매우 유사하다
728x90
반응형