Notice
Recent Posts
Recent Comments
Link
박민혁의 개발
개인과제 새기능 , 배웠지만 잘못쓴 기능 정리 본문
유니티 싱글톤 만들기
첨언 하자면 게임 매니저를 스타트 씬부터 가져왔으면 좋았을 것이다 문제가 좀 있었음
void Awake()
{
if (null == instance)//인스턴스라고 안하고 난 보통 I로 함 자기자신이라는 의미로
{
//이 클래스 인스턴스가 탄생했을 때 전역변수 instance에 게임매니저 인스턴스가 담겨있지 않다면, 자신을 넣어준다.
//난 지금까지 이아래 한줄만 넣어줬었으나 이제 이코드 전체를 넣으려 한다
instance = this;
//씬 전환이 되더라도 파괴되지 않게 한다.
DontDestroyOnLoadgameObject);
}
else
{
//만약 씬 이동이 되었는데 그 씬에도 Hierarchy에 GameMgr이 존재할 수도 있다.
//그럴 경우엔 이전 씬에서 사용하던 인스턴스를 계속 사용해주는 경우가 많은 것 같다.
//그래서 이미 전역변수인 instance에 인스턴스가 존재한다면 자신(새로운 씬의 GameMgr)을 삭제해준다.
Destroy(this.gameObject);
}
}
스프라이트 좌우 변경
sprite.flipX = false;
transform.Find("body").transform.localScale = new Vector3(1, 1, 1);
//위에는 플립 이 FALSE 즉 정상 상태 2번째줄도 X값이 1이기 때문에 정상상태
sprite.flipX = true;
transform.Find("body").transform.localScale = new Vector3(-1, 1, 1);
//true , x값이 -1 이기때문에 반대를 봄 허나 로컬스케일 같은 경우
//스케일 값이 -1 로 바뀌는데 기존값이 0.5 였는데 반대쪽 보겠다고 -1을 해버리면
//반대쪽을 보며 2배로 커진다
//이를 막기위해 x y z 값을 저장해둔후 (saveX로 저장했다고 했을때)
// new Vector3(-saveX, saveY, saveZ); 이런식으로 해줘야한다
깃허브 100mb이상 푸시 못할때
git-lfs 적용
100mb이상으로 확장해준다
https://git-lfs.github.com/ 이곳에 접속하여 git extension을 받아줍니다.
압축을 풀고 install.sh를 실행합니다.
레포에 가서 git lfs install 을 하여 줍니다.
git lfs track "*.zip" - zip이라고 되있지만 다른파일도 가능 (ex .lib 파일이크면 git lfs track "*.lib")
git add .
git commit -m "Your Message"
git push
카메라 움직이기
public class CameraCtrl : MonoBehaviour {
public GameObject A; //A라는 GameObject변수 선언 이 A라는 오브젝터를 따라갈거임
Transform AT; //값 저장용
void Start ()
{
AT=A.transform; //값 저장
}
// Update함수를 그대로쓰면 프레임이 어긋나 버벅거리는 현상이 나타남
// 레이트 함수는 괜찮다고함
void LateUpdate () {// 계속 현재 포지션을 A의 포지션값으로 바꿔줌 = 따라감
transform.position = new Vector3 (AT.position.x,AT.position.y,transform.position.z);
}
}
이방법 외에도 카메라의 부모를 따라갈 오브젝트로 바꾸고 포지션을 0으로 해둘시 따라갈 오브젝트 하위에 있어서 오브젝트를 따라가는 방법도 있다는데 그것도 좋은 방법인듯 하다
스프라이트 렌더러 바꾸기
사용방법 기본
스프라이트이름.sprite = (Sprite)Resources.Load("img/character", typeof(Sprite));
야매
//미리 스프라이트를 선언해두고 유니티에서 그 스프라이트를 저장해둠
public Sprite cha1;
public Sprite cha2;
// 필요할때 스프라이트를 그 스프라이트로 대체
// 유니티에 드래그 앤 드랍을 하면 되서 상당히 편하다
// 그런데 미리 저장해둬야 해서 메모리 관리 같은거에서 조금 손해를 보지 않을까 싶다(정확하지아니함)
playerSprite.sprite = cha1;
정석
정석이라고는 했지만 이게 위에 보다는 나은거 같다는 거지 정답 ? 정석? 이라고보긴 힘들듯함
if (chatype == 1) //나같은경우 캐릭터 선택시 cha type(캐릭터타입)값을 바꾸고 그값에따라 바꿔줌
{
playerSprite.sprite= Resources.Load<Sprite>("new/penguin_atack_01");
// 변수명.sprite 유니티내부리소스폴더 . 로드 해온다 스프라이트로
//리소스 폴더안에 new폴더안에(/)스프라이트명