박민혁의 개발

개인과제 새기능 , 배웠지만 잘못쓴 기능 정리 본문

TIL

개인과제 새기능 , 배웠지만 잘못쓴 기능 정리

박민혁_kog 2023. 9. 7. 20:48

유니티 싱글톤 만들기

첨언 하자면 게임 매니저를 스타트 씬부터 가져왔으면 좋았을 것이다 문제가 좀 있었음

    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폴더안에(/)스프라이트명

'TIL' 카테고리의 다른 글

깃 이그노어  (0) 2023.09.11
유니티 에셋 저작권  (0) 2023.09.08
유니티 충돌  (0) 2023.09.06
유니티 설명 조금  (0) 2023.09.04
알고리즘 의문점  (0) 2023.09.01