Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 게임제작
- 소규모프로젝트
- ar
- 리듬게임에디터
- AR Foundation
- 1인개발
- raycast
- 확장메서드
- AR게임
- 게임개발
- 로케트
- 델리게이트
- 인터페이스
- 유니티
- 리듬게임
- AR세팅
- ARProgect
- C#
- callbyvalue
- github
- Unity
- 병맛게임
- 레이캐스트
- ExtensionMethod
- Quaternion
- 게임
- 깃허브
- callbyreference
- 짐벌락
- Euler
Archives
- Today
- Total
Ssssong += Dev
[C++, C#] static, property 본문
static 정말 중요한 개념인데 별로 친하질 않아서....
분명 개발하면서 static 쓰면 더 효율적인 부분이 있었을 텐데도
맞아 이런 게 있었지......... 하고 방치해 둔 수준이라 다시 복습하였다.
static으로 선언된 객체는 선언 시 데이터 영역에 할당되어 초기화는 최초 한 번만 실행된다.
데이터 영역에 할당되었기 때문에 프로그램이 끝날 때 해제된다.
#include <iostream>
using namespace std;
class Door
{
public:
static int doorNum;
Door();
};
int Door::doorNum = 0; //초기화 시켜주기. 안하면 에러남!
Door::Door(){
doorNum++;
}
int main()
{
Door doorA;
Door doorB;
cout << "문의 갯수는 " << Door::doorNum <<"개 입니다." << endl;
return 0;
}
C++ 에서 static 변수를 사용한 모습이다.
클래스 선언하면서 데이터 영역에 올라가고 해당 클래스 객체를 따로 만들지 않아도 사용 가능하다.
함수도 static으로 생성 가능하다.
위 코드에서 doorNum은 doorA, doorB가 생성될 때 더해져서 Door::doorNum은 2를 출력한다.
property는 get(), set() 을 C#에서 더욱 간편하게 구현하는 기능이다.
public class ObjectMove : MonoBehaviour
{
public static float moveSpeed;
}
public class GameManager : MonoBehaviour
{
public int Score
{
set{
score = value;
scoreLabel.text = Score.ToString();
if(score == 5) //프로퍼티의 set에서 조건이 생겨서 조건 만족하는 한 번만 실행될 수 있다.
{
ObjectMove.moveSpeed += 1;
//moveSpeed가 static으로 선언되어 객체 생성 없이 클래스 자체에 접근해 사용할 수 있다.
}
}
get{
return score;
}
}
}
static으로 선언한 moveSpeed를 Score 프로퍼티에서 가져왔다.
Score = value; 이렇게 set할 수 있고 set 안의 기능들도 같이 적용된다. 점수가 변할 때 한 번 실행되어야 하는 기능들을
이렇게 프로퍼티를 사용해서 Update 내에서 켜고끄고 일일이 안해주고 훨씬 경제적으로 사용할 수 있다.
'개발 > 공부' 카테고리의 다른 글
[유니티, C#] layerMask와 비트연산자 (0) | 2022.05.09 |
---|---|
[C#] 구조체와 클래스의 값 복사 (0) | 2022.05.09 |
피보나치 수열, 하노이 탑, 링크드리스트, 배열형 스택 (0) | 2022.05.02 |
[C#, 유니티] Coroutine (0) | 2022.04.14 |
[유니티] velocity, AddForce (0) | 2022.04.11 |