▣ Struct와 Class의 차이
C#에서 struct와 class는 둘 다 사용자 정의 데이터 타입을 정의하는 데 사용됩니다.
그러나 메모리 할당 방식, 성능, 사용 사례 등에서 중요한 차이점이 있습니다.
▣ Struct를 사용하는 경우:
작은 크기의 데이터를 다룰 때 (예: 2D 좌표, 색상 데이터)
불변성(Immutable)을 유지해야 하는 경우
값 타입이 필요할 때 (데이터를 복사해서 사용해야 하는 경우)
▣ Class를 사용하는 경우:
복잡한 데이터 구조나 상태를 유지해야 할 때
상속과 다형성(Polymorphism)을 사용해야 할 때
참조에 의한 호출이 필요할 때 (데이터의 크기가 큰 경우)
https://docs.unity3d.com/ScriptReference/MonoBehaviour.html
▣ Class 관련 문제 및 정답
- 문제 1:
Unity에서 Player라는 클래스를 만들어 보세요. 이 클래스는 다음의 속성을 가져야 합니다:
이름 (name: string)
체력 (health: int)
공격력 (attackPower: int)
이 클래스에는 다음과 같은 기능이 있어야 합니다:
TakeDamage(int damage)라는 메서드를 만들어, 플레이어의 체력을 주어진 데미지만큼 감소시키세요.
public class Player
{
// 여기에 코드를 작성하세요.
}
- 정답 1:
public class Player
{
public string name; // 플레이어 이름
public int health; // 플레이어 체력
public int attackPower; // 플레이어 공격력
// 데미지를 받아 체력을 감소시키는 메서드
public void TakeDamage(int damage)
{
health -= damage;
if (health < 0)
health = 0; // 체력이 0보다 작아지지 않도록 처리
}
}
- 문제 2:
Enemy라는 클래스를 만들어보세요. 이 클래스는 다음과 같은 메서드를 가져야 합니다:
Attack(Player player)라는 메서드를 만들어, 지정된 Player 객체의 체력을 감소시키세요. 공격력은 Enemy 클래스의 필드로 선언된 attackPower 값을 사용하세요.
public class Enemy
{
// 여기에 코드를 작성하세요.
}
- 정답 2:
public class Enemy
{
public int attackPower; // 적의 공격력
// 플레이어를 공격하는 메서드
public void Attack(Player player)
{
player.TakeDamage(attackPower);
}
}
▣ Struct 관련 문제 및 정답
- 문제 1:
Point2D라는 구조체를 만들어 보세요. 이 구조체는 다음의 속성을 가져야 합니다:
x: int
y: int
또한, 이 구조체에는 좌표를 (dx, dy) 만큼 이동시키는 Move(int dx, int dy)라는 메서드를 작성하세요.
public struct Point2D
{
// 여기에 코드를 작성하세요.
}
- 정답 1:
public struct Point2D
{
public int x; // x 좌표
public int y; // y 좌표
// 좌표를 이동시키는 메서드
public void Move(int dx, int dy)
{
x += dx;
y += dy;
}
}
- 문제 2:
Rectangle이라는 구조체를 만들어 보세요. 이 구조체는 다음의 속성을 가져야 합니다:
width: float
height: float
이 구조체에는 사각형의 면적을 계산하는 Area()라는 메서드를 추가하세요.
public struct Rectangle
{
// 여기에 코드를 작성하세요.
}
- 정답 2:
public struct Rectangle
{
public float width; // 사각형의 너비
public float height; // 사각형의 높이
// 사각형의 면적을 계산하는 메서드
public float Area()
{
return width * height;
}
}
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 2D AI 추적시스템 (0) | 2024.09.05 |
---|---|
유니티 오브젝트 풀링 (2) | 2024.09.04 |
유니티 Array, List, Dic , Call by Reference, Call by Value (0) | 2024.08.31 |
유니티 메모리 구조 (스택, 힙, 데이터, 정적변수, 지역변수, 전역변수) (0) | 2024.08.31 |
유니티 Delegate (0) | 2024.08.31 |
댓글