• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

안녕하세요. static 질문요

21.10.18 12:12 작성 조회수 134

2

제가 왕초보라.. 좀 헷갈려서여...
유니티에서 코드 짤때는 static을 메니저같은곳.. 싱글톤 같은곳에서... 쓰고 웬만해선 잘 안쓰는 거로 아는데
 
서버편같이 유니티말고 그냥 코드 짤때는 static을 웬만한곳에 다 붙이던데.. 다른 경우인가여?
 
static Listener _listener = new Listener();
이경우에도 유니티같은경우 static을 안 쓸텐데
여기서는 안쓰니까 에러가 나더라고요..
 
static void Main(string[] args){}
이런식으로 메인에도 static이 있고...
 
유니티에서 코드 짜는거랑 걍 c#이랑 좀 다른건가여?
 
 
 
 

답변 1

답변을 작성해보세요.

2

그 부분이 처음에는 엄청 헷갈리긴 합니다.
우선 static 관련 아래 링크 참고 바랍니다.
https://www.inflearn.com/questions/97965

static은 [위치상으로 class 안에 있지만, 사실 class 설계 자체와는 무관하다]고 이해하면 됩니다.
어떤 함수가 static이라면, 특정 객체에 종속적이지 않은 함수라 볼 수 있는데,
이 때문에 static이 아닌 멤버 변수에 접근할 수 없습니다. (어떤 객체인지를 애당초 모르므로)
그래서 한 마디로 [static 함수 내부에선 static 멤버 변수에만 접근 가능하다]고 이해하면 되고,
static이 아닌 변수에 접근하려면 해당 객체를 직접 만들어서 사용해야 합니다. 

static void Main()
{
   Program p = new Program();
    p.스태틱아닌변수 = 3; //<< 이런 식으로 static 아닌 변수 사용 가능
   
   Knight k = new Knight();
    k.hp = 3; // << 이런 식으로 static 아닌 변수 사용 가능 
}

기본적으로 콘솔 프로그램에선 static void Main으로 메인함수가 무조건 static이기 때문에,
내부에서 static 변수를 만들어야 동일하게 static인 Main 함수에서 사용 가능합니다.
유니티랑 일반 C#이 다른건 당연히 아니구요. 유니티에서도 static 함수를 만들었다면,
내부적으로는 static 멤버변수를 활용해야 합니다.