C# static(정적) 변수와 함수

m._.jooong·2023년 3월 8일
0

Unity C#

목록 보기
16/22


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()
    {

    }
}

0개의 댓글