태그된 제품에 대해 수수료를 받습니다.
Object 객체
객체 - class로부터 만들어진 자료,
class에 정의 되어있는 모든 멤버 변수를 정의할 수 있음
int float등은 값만 가지지만,
객체는 멤버 변수 외에 class에 정의 되어있는 메소드를
함께 실행할 수도 있음 (데이터와 기능을 함께 가질 수 있음)
1. Character 정의
2. player enemy 객체 만들기
3. 멤버 변수에 값 설정하기 .name .hp .damage
4. 객체들이 가지고 있는 기능 이용하기 TakeDamage
다른 방법
class를 만들고 class에 생성자를 정의해서 값을 바로 초기화
이 class로부터 player enemy boss라는 객체를 만들어서 기능 사용
Character에 값을 전달해서 사용자 정의 생성자를 호출할 수도 있고
그냥 Charactor()만 생성하면 디폴트 생성자 호출
boss의 경우에만 Custom 호출
this. 쓰면 class 내에 정의 되어있는 멤버 변수를 가르킨다
this. 없으면 전달 값을 지칭하게 됨
코드 1 Class 수정
// ----------------------- Object 객체 작업 위해 코드 추가 --------------------------
// 생성자 - Class 객체가 만들어질 때 자동으로 호출되는 메소드
public Character() {
Debug.Log("- Default Constructor -");
}
public Character(string name, int hp, int damage) {
// 객체가 만들어짐과 동시에 class가 가지고있는 멤버 변수들 바로 초기화
Debug.Log("- Custom Constructor -");
this.name = name;
this.hp = hp;
this.damage = damage;
}
// --------------------------------------------------------------------------------
코드 2 Object
public class _15_Object : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
// string playerName = "Lion";
// int playerHp = 100;
// int playerDamage = 30;
// string enemyName = "Enemy1";
// int enemyHp = 30;
// int enemyDamage = 5;
// Character 정의, play enemy 객체 만들기, 멤버 변수에 값 설정하기 .name .hp .damage, 객체들이 가지고 있는 기능 이용하기 TakeDamage
// 객체 - class로부터 만들어진 자료, class에 정의되어있는 모든 멤버 변수를 정의할 수 있음,
// int float등은 값만 가지지만 객체는 멤버 변수 외에 class에 정의 되어있는 메소드를 함께 실행할 수도 있음(데이터와 기능을 함께 가질 수 있음)
Character player = new Character(); // 새로운 캐릭터 객체 만들기
player.name = "Lion";
player.hp = 100;
player.damage = 30;
Character enemy = new Character();
enemy.name = "Enemy";
enemy.hp = 30;
enemy.damage = 5;
// --------------------------------------
// TakeDamage(playerName, playerHp, enemyDamage);
// TakeDamage(enemyName, enemyHp, playerDamage);
player.TakeDamage(enemy.damage);
Debug.Log("-----------------------");
enemy.TakeDamage(player.damage);
Debug.Log("-----------------------");
Character boss = new Character("Boss", 1000, 50);
boss.TakeDamage(player.damage);
}
// Update is called once per frame
void Update()
{
}
}
결과
태그된 제품에 대해 수수료를 받습니다.