chat gpt 유니티 api가 있고 영상도 올라와있다
싱글톤
클래스자체를 static화 하고 싶은데 class에 static을 붙일순 없으니 사용하는 디자인패턴
public static Monster(클래스이름) Instatnce {get; private set;}을 만들어 놓고
Awake()함수에서
private void Awake()
{
Instance = this;
} 라고 초기화를 해주면
이 클래스는 유일한 static이 된다
모노비헤이버를ㄹ상속받으면 생성자사용불가, base키워드도 사용불가
그럼 파생클래스의 생성자에서 매개변수를 : base(hp) 를 붙혀
파생클래스의 매개변수를 부모의 매개변수로 전달해주는 방식은 불가
하지만 그대로 넘겨주는 간단한 방법이 있다는데 고민해보자
this는 이 클래스 자체를 의미하고
gameobject는 this와 비슷하긴 한데 현재 스크립트가 포함되어있는 "게임오브젝트 자체"를 말한다
그럼 부가적인 컴포넨트, 등등이 포함되겠찌
궁금한게 그럼 한 게임오브젝트에 여러 스크립트가 포함되있는 그 모든스크립트에서 각자 gameobject를 사용한다면
모두 그 스크립트들이 포함되어있는 하나의 게임오브젝트를 가리키겠지?
각 컴포넨트 자체도 스크립트니까 그럴것같다
Awake() 실행 뒤에 Start() 가 실행됨
그럼 초기화할때 Start()에 초기화할 코드를 넣어주면되지 왜 Init()이라는 함수를 따로 만들어 생성자처럼 활용할까?
Awake,Start등등은 기본적으로 게임오브젝트가 활성화 될때 실행된다
게임시작할때 비활성화되어있다가 SetActive()를 해주면 그때 비로소 실행된다는 말
그럼 다른 클래스에서 MonsterInit()을 호출하는것과 Monster클래스 자체를 호출할때를 비교해보자
MonsterInit()이 더빠름 ㅇㅋ? 테스트해보자 나중에
TMP 에서 한글 사용
TMP에서 한글을 입력하면 네모네모
https://blockdmask.tistory.com/590
this와 gameobject의 차이점
혹시 과거버전 스크립트에
public GUIText text; 이런식으로 되어있으면 이게 개편되어서 오류난다.
해결위해
using UnityEngine.UI; 추가하고,
GUIText를 Text로 바꿔주면 된다
using System.Collections.Generic;
: 딕셔너리 타입 사용가능하게 해줌
bool 프로퍼티 활용
bool조건 검사가 필요한 경우 get 메서드만 가진 프로퍼티로 따로 빼서 하는듯.
public bool IsNull
{
get
{
return pokerCards == null;
}
}
public bool IsFlush
{
get
{
if (IsNull)
return false;
int tmp = (int)pokerCards[0] / 13;
for (int i = 1; i < pokerCards.Length; i++)
{
if ((int)pokerCards[i] / 13 != tmp)
return false;
}
return true;
}
}
public bool IsStraight
{
get
{
if (IsNull)
return false;
var tmp = from card in pokerCards
orderby (int)card % 13
select card;
if ((int)tmp.First() % 13 + 4 == (int)tmp.Last() % 13)
return true;
return false;
}
}
public bool IsMountain
{
get
{
if (IsNull)
return false;
var tmp = from card in pokerCards
orderby (int)card % 13
select card;
PokerCard[] tmp2 = tmp.ToArray();
if ((int)tmp2.First() % 13 == 0 && (int)tmp2[1] % 13 == 9 && (int)tmp2.Last() % 13 == 12)
return true;
return false;
}
}