안녕하세요, Extension 관련 구현에 대해 연습해보다가 궁금증이 생겨 질문드립니다. 예를들어 우리가 구현한 Extension 클래스 안에 AddUIEvent 와 같은 메소드를 추가해주면서 this GameObject go 라는 문법을 써줌으로서, 마치 GameObject 의 함수인 것처럼 쓸수 있게되었는데요, 만약 Extension 클래스안에 ToString 이라는 함수를 만들어주면, 실제로는 최상위 클래스인 Object 클래스 내에 구현된 ToString 이 호출되는 것을 확인했습니다. 이럴 경우, 이름을 적절히 잘 회피해서 쓰는 방법 이외에 내가 구현한 함수를 쓰도록 하는 다른 방법이 있을까요?
InventoryItemDataList에 유저가 보유한 아이템 목록이 저장하고 해당 리스트 객체를 PlayerPrefs로 저장할 때 JSON을 쓰는 이유는 PlayerPrefs에서 int, float, string만 저장할 수 있기 때문에로 이해했는데 맞나요? 그리고 굳이 JSON 이여 할 이유가 있나요? 또 PlayerPrefs에 유저가 접근이 가능하다고 하는데 그러면 악의적으로 변형이 가능하지 않나요? 이 경우는 어떻게 대비하나요?
혹시 게임개발이나 개발관련 추천하시는 책이 있으실까요? 최근 남는시간에 책을 읽고있는데 지식공유자님이 추천하시는 책을 읽어보고 싶어서 질문드립니다! 책을 많이 읽었던편이 아니라 유명한거라도 괜찮습니다 있으시다면 2-3가지 정도 부탁드립니다 (_ _) 감사합니다 추가로 섹션6에 업적/미션 Pt.2에 Resources/Textures 폴더를 누락하신 듯 합니다. 때문에 IconGolds와 IconGems 텍스쳐를 불러오지 못하네요 통합강의자료에는 있어서 그걸로 임포트 했습니다!
새싹부터 시작하는 Unity 게임 개발 섹션3 2D게임 애니메이션 강의 시청 중 점프 애니메이션이 적용되지 않습니다. 유니티에서 transition은 아래와 같이 설정한 상태이고 코드는 강의와 똑같이 작성한 상태입니다. if (Input.GetKeyDown(KeyCode.Space) && isJump == false) { anim.SetTrigger("isJUMP"); isJump = true; anim.SetBool("isIDLE", false); anim.SetBool("isRUN", false); rigidbody.velocity = new Vector2(rigidbody.velocity.x, jumpPower); } if(rigidbody.velocity.y == 0f ) { isJump = false; } JUMP 애니메이션만 다시 재생해보면 점프하는 동작이 나오긴 합니다. 강의를 듣던 중 GetComponent<SpriteRenderer>().sprite = JumpSprite; 이런 코드가 있던데 저는 작성하지 않은 상태입니다 혹시 이 코드가 점프가 안 되는 이유 중 하나인지 질문 남깁니다.
지금 Command 패턴강의 까지 수강중인데, 멀티쓰레드 파트에서 배웠던 락 처리는 Thread t 이렇게 만들고 시작해야 멀티쓰레드 환경으로 변하는걸로 알고있습니다 하지만 지금까지 보면 멀티쓰레드를 고려하여 락을 계속 추가해주고 있는데요 args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted) 이것때문에 다른 쓰레드들이 풀리기 시작한건가요? 궁금합니다
강의 잘 듣고 있습니다. 선생님 강의를 듣기 이전에 독학으로 클라이언트를 구축하다가 몬스터별로 각기 다른 ai를 만들고 싶어 찾다보니 행동 트리(Behaviour Tree)에 대해 알게되어 유니티 에셋스토어에서 판매하는 Behaviour Designer 를 구매하여 사용하게 되었습니다. 대부분의 온라인 게임에서는 몬스터별로 패턴이 거의 비슷하지만 혹시 다양한 몬스터 ai패턴을 가지고 있는 게임회사에서는 해당 에셋을 사용하는 곳이 많은지 자체적으로 구현한 툴을 사용하여 몬스터 ai를 구축하는지 궁금합니다
Send에 관한 비동기 처리에서 Send 메소드에서 Queue에 넣어주고, RegisterSend에서 Deque 하는데, Send 메소드에서는 Enqueue하면서 lock을 걸어주는데, RegisterSend에서 Dequeue 할 때는 lock이 없어서요. Enqueue 하는 동안 Dequeue 한다거나, Dequeue 하는 동안 Enqueue 하는 등의 문제는 발생하지 않나요?
while (_reserveCount + monsterCount < keepMonsterCount) { StartCoroutine(ReserveSpawn()); } 업데이트에서 해당 while문이 재생되는 시점에 게임이 멈추는것 같습니다. 주석처리하면 정상적으로 게임이 진행되는것 보면 해당 부분에서 문제인것 같습니다. 강의를 듣는동안에는 정상적으로 되었는데 지금은 안되네요ㅠ 별도로 수정한 부분은 없습니다.
안녕하세요 강의 잘 보고 있습니다. 현재 3d 모바일 게임을 만들고 있습니다 가상 조이스틱을 이용해 플레이어를 이동시키고 있구요 현재 몬스터 AI를 구현하기 위해 A*를 이용해서 PathFinding을 구현중에 있습니다 구현을 위해 맵은 1X1단위로 위에서 아래로 Ray를 쏴서 맵 정보를 저장해 놓은 상태입니다. 이런 상황에서 만약 몬스터는 (2, 0, 2)좌표에 Target은 (5.5, 0, 5.5) 좌표에 있다면 절대 Target을 찾을 수 없겠다 싶어 거리가 1이하이면 찾은걸로 가정을 하려 했습니다 그런데 그 사이에 장애물이 있을 수도 있고 별의 별 상황이 있겠다 싶어 이게 맞는건지 의문이 듭니다 이런 그리드 단위로 움직이지 않는 게임에선 어떻게 Finding을 해야 좋을까요?
유니티 버전을 22.3.6f 로 하라고 하셨었는데 lts버전이 아니여서 22.3.47f 로했는데 그래서 그런건지 여기도 이렇게 글씨에 이렇게 그어져있고 자꾸 오류가 뜨네요 ㅠ #pragma warning disable CS0618 // 형식 또는 멤버는 사용되지 않습니다. 이렇게 넣어서 오류 문구는 안뜨는데 상관없는 걸까요??
선생님 ㅠ 저는 노트북 카메라 화면을 가져오려고 해서 index는 0으로 기입했구요. try 구문에서 CvCapture.FromCamera 가져올 때부터 결과가 null이더라구요. Exception 메시지를 확인해보니까, "OpenCvSharp.CPlusPlus.NativeMethods'의 형식 이니셜라이저에서 예외를 Throw했습니다." 라고 하는데, 이 문제는 어떻게 해결해야 하나요?? ㅠ
Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues. UnityEngine.Transform:set_parent (UnityEngine.Transform) Object_Pool:Return (UnityEngine.GameObject,System.Action`1<UnityEngine.GameObject>) (at Assets/00_Scripts/Manager/Pool_Mng.cs:48) Pool_Mng:Add_Queue (string) (at Assets/00_Scripts/Manager/Pool_Mng.cs:111) Pool_Mng:Pooling_OBJ (string) (at Assets/00_Scripts/Manager/Pool_Mng.cs:83) Monster:GetDamage (double) (at Assets/00_Scripts/Monster/Monster.cs:62) Bullet:Update () (at Assets/00_Scripts/Bullet.cs:71) 공격할 때 마다 계속 쌓이네요 ㅠ