목록분류 전체보기 (86)
박민혁의 개발
스크립터블 오브젝트를 사용하여 아이템을 만들고 그 아이템을 이용하여 아이템창 , 상점을 구현 하였는데 이게 상당히 문제가 있었다 아이템을 장착하는것 이니 isEquip 장착중인가? 를 아이템에 넣었는데 게임 시작 - 아이템 장착 - 게임 종료 재시작 = 장착중 판정 이런 버그가 있었기에 게임 시작시 값을 리셋해주어야 햇다 상점또한 마찬가지 였으며 다른 버그는 같은 아이템이 여러개 있을경우 같은 스크립터블 오브젝트가 공유 되기에 똑같은 검 아이템이 검1 검2 개가 있을때 검1을 장착시 모든 검의 isEquip이 true가 되버리는 버그가 생겨버렸다 결론 스크립터블 오브젝트는 데이터가 저장 되기 때문에 주의가 필요하다 ex 드랍될 물약 의 갯수 = 5개가 든 물약이 있을때 사용해서 4개로 만들어두면 다음에 ..

[SerializeField] public으로 만들어진 변수는 Inspector창에 나타나게 되고 private은 Inspector창에 뜨지 않는다 public은 Inspector창에서 쉽게 변경을 할 수 있습니다. 외부의 접근과 조작을 허용하는 것입니다. 하지만 public을 너무 많이 사용을 해서 모든 변수가 Inspector창에 나타나면 뭐가 뭔지 구분하기 힘들고 협업을 할 때에도 문제가 됩니다. 협업을 할 때에 이 값은 참조가 되서 변경이 되면 안되는데 참조를 해서 변경을 할 수 있기 때문입니다. 그렇다면 public의 장점인 Inspector에서 나타나는 점과 private의 참조를 못하는 특징을 사용하고 싶을때 사용합니다. 다음과 같이 [SerializeField]를 사용하면 됩니다. 위에 예..
기즈모 (Gizmos) 기즈모란 씬에 있는 겡미 오브젝트와 관련된 그래픽 시각적 디버깅을 위해 사용 되며 설정된 기즈모는 씬뷰에 보이게 된다 사용 하는곳 시각적 디버깅 테스트를 위해 사용된다 ex 땅이 발에 닿는가 n미터 이내에 접근 했는지 시각적으로 보기 기즈모의 기능 DrawCube -타겟 중심으로 박스를 그립니다 DrawFrustum -카메라 절 두체를 그립니다 DrawGUITexture -씬에 텍스처를 그립니다 DrawIcon -씬뷰위치에 아이콘을 그립니다. DrawLine -타겟부터 타깃까지 직선을 그립니다. DrawSphere -타겟을 중심으로 구체를 그립니다. DrawMesh -메쉬를 그립니다. DrawWireCube -와이어 큐브를 그립니다 DrawWireMesh -와이어메쉬를 그립니다. ..
델타타임은 사용자의 컴퓨터 성능에 따라 변하는 값입니다. 유니티 라이프 사이클 글에서 Update함수가 1초에 프레임 수 만큼 실행된다고 말했습니다. 그런데 이 프레임은 컴퓨터 성능에 의해 결정되므로, 컴퓨터 성능이 낮다면, 프레임 역시 낮고, 반대로 높다면 프레임 또한 높아집니다. 이렇게 되면 Update 함수의 호출 횟수가 달라지기 때문에, 멀티플레이를 할 때 심각한 문제가 생깁니다. 카트라이더를 한다고 가정해 봅시다. 앞으로 전진하는 코드가 Update 함수에 있다고 하면, 고성능 유저는 Update에 있는 주행코드가 1초에 120번 실행돼 같은 시간에 저성능 유저에 비해 훨씬 멀리 갈 것입니다. 이러한 갭을 메꿔주는 것이 델타타임입니다. 델타타임은 60프레임의 경우 1/60 같은 값으로 정해집니다..
스크립트의 컴포넌트가 순서가 영향을 주는듯 하다 라는 주제로 작성하려 했으나 다시 순서를 바꿔보았을때 오류가 발생하지 않았다 튜터님에게 물어봤을때 컴포넌트 스크립트가 유기적으로 짜여져 있는경우 영향을 줄 수도 있을거 같긴하나 그런 경우는 본적이 없다고 하셨다 순서보단 컴파일 , 저장 에러일 확률이 크다는듯 하다 ..

1) Sprite Renderer component 사용하기 위한 선언,초기화 여기에서 Sprite Renderer를 사용하기 위해서는 컴포넌트를 선언하고, 초기화 해줘야 사용할 수 있다. ------------------------------ public SpriteRenderer renderer; // 스프라이트 렌더러 선언 renderer = GetComponent(); // 게임오브젝트의 스프라이트 렌더러 컴포넌트 가져오기 ------------------------------ 선언, 초기화를 해야 사용할 수 있다. ㄴ 스프라이트 외에도 다 초기화를 해주는게 좋은거 같다 2) Sprite Renderer 활성화/비활성화 스프라이트 렌더러는 이미지를 켜고 끌수 있다. 그런데 스프라이트만 굳이 비활성..
호출 시점에 따라 Awake 대상이 GameObject 이다. GameObject가 On 될때 한번만 호출 된다. 즉, Component 가 On/Off 되어 있는 것과 는 상관없이, GameObject 가 최초 On 될때 딱 한 번 호출 된다. 처음부터 On 되어 있고 scene 에 배치되어 있다면 play 될때 바로 호출된다. OnEnable/OnDisable 대상이 Component(MonoBehaviour) 다. Component의 Enable 조건은 GameObject-On & Component-On 일 때이고, 둘 중 하나라도 Off 면 Disable 이다. Component의 초기 상태를 'Disable'로 출발해서 상태가 Enable/Disable로 변경될 때마다 호출된다. 따라서, Ena..
1. 특정 GameObject를 스크립트에서 반환 받기 - 찾고자 하는 오브젝트는 객체화가 되어 있어야 함 (Hierarchy View에 표시되어 있는가) - 찾고자 하는 오브젝트는 활성화(Active)가 되어 있어야 함 (오브젝트의 Inspector View의 이름 옆 체크박스가 체크되어 있는가) GameObject obj1 = GameObject.Find("Name"); // Object의 이름으로 대상을 찾음, //이름이 같을 경우 가장 처음 검색된 Object 반환 GameObject obj2 = GameObject.FindWithTag("Tag"); // 태그로 대상을 찾음, 이름이 같을 경우 가장 처음 검색된 Object 반환 GameObject obj3 = GameObject.FindO..