
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 클래스 소속 맴버 static(정적) 변수, (정적메서드)
// <특징>
// 1. 객체 생성없이 클래스이름.변수명, 클래스이름.메서드명()
// 2. 프로그램이 시작할 때 메모리가 확보되서 프로그램이 종료될 때까지 유지된다.
// 3. 클래스 소속이지만 메모리를 클래스와 별도로 생성하고 공유된다.
public class Hero
{
public string m_Name; //<-- 일반 맴버 변수 (인스턴스 맴버 변수)
public int m_Hp;
public static int s_UserGold = 0; //<-- 정적 맴버 변수 (클래스 맴버 변수)
public void SetUserGold(int a_Gold) //<-- 일반 맴버 메서드
{
s_UserGold = a_Gold;
}
public int GetUserGold() //<-- 일반 맴버 메서드
{
return s_UserGold;
}
public static void StaticPrint() // 정적 멤버 메서드 (클래스 멤버 메서드)
{
//m_Name = "돌고래"; // 일반 멤버 변수 사용은 에러
//m_Hp = 50;
int a_ABC = 100; // 지역변수
s_UserGold = 1234; // 정적 멤버 변수 사용 문제 없음.
Debug.Log(s_UserGold);
}
}
public class Test_1 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Hero.StaticPrint(); // 정적 멤버 메서드 사용
Hero.s_UserGold = 999; // 정적 멤버 변수 사용
// 유니티에서 제공하는 static method 예
//Debug.Log("Test");
//Random.Range(1, 10);
Hero AAA = new Hero();
AAA.m_Name = "너구리";
AAA.m_Hp = 123;
//AAA.s_UserGold = 111;
Debug.Log(AAA.m_Name + " : " + AAA.m_Hp);
Hero BBB = new Hero();
BBB.m_Name = "팔라독";
BBB.m_Hp = 98;
Debug.Log(BBB.m_Name + " : " + BBB.m_Hp);
Hero CCC = new Hero();
CCC.m_Name = "고양이";
CCC.m_Hp = 70;
Debug.Log(CCC.m_Name + " : " + CCC.m_Hp);
CCC.SetUserGold(3333);
Debug.Log(Hero.s_UserGold + " : " + AAA.GetUserGold() +
" : " + BBB.GetUserGold() + " : " + CCC.GetUserGold());
}// void Start()
// Update is called once per frame
void Update()
{
}
}