[유니티 C#] This 키워드 - 코드

YongSeok·2022년 10월 28일
0
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Character : MonoBehaviour
{
    // 멤버변수 정의
    public string name;
    public int damage;
    public int hp;
    public int maxHp; // 2. 현재 체력과 최대 체력을 분리해서 정의

    // 생성자
    // 3. 필드 초기화를 위해 생성자 매개변수를 추가  
    public Character(string name, int damage, int maxHp)
    {
        // 4. this는 클래스의 현재 인스턴스를 가리키며 멤버 엑세스 연산자를 사용해서 멤버에 엑세스 할 수 있다.
        this.name = name;
        this.damage = damage;
        this.maxHp = maxHp;
        this.hp = this.maxHp; // 5. 매개변수 값을 멤버변수에 할당
    }

    // 8. 공격할수 있는 기능인 Attack 메서드를 정의하고 매개변수로 캐릭터 인스턴스를 전달 받습니다.
    public void Attack(Character target)
    {
        Debug.Log(this.name + "이(가) " + target.name + "을(를) 공격합니다.");
        target.Hit(this.damage); // 10. Attack 메서드에서 타겟의 Hit메서드를 호출 합니다. 매게변수로 공격력을 전달합니다
    }
    // 9. 피해를 받을수있는 Hit메서드를 정의하고 매개변수로 공격력을 전달 받습니다.
    public void Hit(int damage)
    {
        Debug.Log(this.name + "이(가) " + damage + "만큼 피해를 받았습니다.");
        this.hp -= damage; // 11. Hit메서드에서는 체력에서 피해량 만큼을 뺴줍니다.
    }
}

// 1. 생성자와 멤버변수 정의
// 2. 현재 체력과 최대 체력을 분리해서 정의
// 3. 필드 초기화를 위해 생성자 매개변수를 추가  
// 4. this는 클래스의 현재 인스턴스를 가리키며 멤버 엑세스 연산자를 사용해서 멤버에 엑세스 할 수 있다.
// 5. 매개변수 값을 멤버변수에 할당
// 8. 공격할수 있는 기능인 Attack 메서드를 정의하고 매개변수로 캐릭터 인스턴스를 전달 받습니다.
// 9. 피해를 받을수있는 Hit메서드를 정의하고 매개변수로 공격력을 전달 받습니다.
// 10. Attack 메서드에서 타겟의 Hit메서드를 호출 합니다. 매게변수로 공격력을 전달합니다
// 11. Hit메서드에서는 체력에서 피해량 만큼을 뺴줍니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Program : MonoBehaviour
{
    // 6. 캐릭터 인스턴스를 생성하고 매개변수로 이름, 공격력, 최대체력을 전달
    Character hong = new Character("홍길동", 3, 10);
    Character lim = new Character("임꺽정", 2, 12);

    void Start()
    {
        Debug.Log("이름 : " + hong.name + "   공격력 : " + hong.damage + "   체력 : " + hong.hp + "/" + hong.maxHp);
        Debug.Log("이름 : " + lim.name + "   공격력 : " + lim.damage + "   체력 : " + lim.hp + "/" + lim.maxHp);
        

        hong.Attack(lim);
        Debug.Log("이름 : " + lim.name + "   공격력 : " + lim.damage + "   체력 : " + lim.hp + "/" + lim.maxHp);

    }
}

// 6. 캐릭터 인스턴스를 생성하고 매개변수로 이름, 공격력, 최대체력을 전달
// 7. 생성된 클래스 인스턴스의 필드 값을 출력

0개의 댓글