묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
캐스팅 질문 드려요.
Connect 구현 중에 캐스팅 코드관련해서 궁금한 것이 있습니다. 명시적 캐스팅을 진행할 때 Socket socket = (Socket) args.UserToken; 이렇게 진행한다고 배웠는데 Socket socket = args.UserToken as Socket; as 키워드로 하는 캐스팅이 나와 당황스러웠어요. 둘 차이점이 있나요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ReaderWriterLock 구현 연습 파트 질문입니다!
ReadLock() 작성 중에 조건이 아무도 WriteLock을 획득하고 있지 않으면 ReadCount를 1 늘린다 라서 if ( (_flag & WRITE_MASK) == 0 ) 이 코드는 이해하겠는데 Interlocked를 사용하면서 이 부분이 사라지고 int expected = (_flag & READ_MASK); if (Interlocked.CompareExchange(ref _flag, expected + 1, expected) == expected) return; 이렇게 작성이 되었는데요. 이러면 WriteLock 체크를 무시하는 것이 아닌가요? 코드로만 보면 WriteLock 영역은 모두 0으로 날려버리는 것이니 WriteLock이 있던 없던 그냥 Read 하겠다라고 이해되어서요.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ReaderWriterLock 강의 10분 47초 쯤 나오는 Reward 예시에 대해 질문이 있습니다.
ReaderWriterLock 강의 10분 47초 쯤 나오는 Reward 예시에 대해 질문이 있습니다. Reward 예시에서 GetRewardById(int id) 를 설명하시면서, 운영 툴로 보상을 지급해야 할 때, lock이 필요하다 라고 말씀하셨었는데 애초에 MMORPG를 잘 안해서 와닿지 않는 것 같아요. 장기적으로 본다면 게임내의 캐릭터가 가지고 있는 아이템들은 DB로 관리될 것이라 생각되는데, 왜 Lock이 필요한 것인지 이해가 잘 되지 않아요. 메모리 배리어 파트의 Store, Load 와 관련된 것 이라면 DB와 무관하게 실시간으로 캐릭터에게 지급이 된다라고 이해한다면 맞는것 같은데 이렇게 생각하는게 맞는건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
터레인 클릭이 안돼요
안녕하세요 애셋스토어에서 받은 데모 씬으로 유니티짱, @Scene, Main Camera를 옮기고 나서 터레인과 빌딩의 레이어를 Wall로 바꿨는데도 캐릭터가 이동하지 않기에 확인해봤더니 InputManager의 이 코드에 막혀 클릭하는 이벤트가 실행되지 않는 것 같습니다. if (EventSystem.current.IsPointerOverGameObject()) return; 이 코드는 UI를 클릭한경우 다른 클릭 이벤트를 막기위해 쓴 코드로 알고있는데 왜 터레인을 클릭했는데도 이 코드에 막혀버리는걸까요? 지금까지 한것중에 뭔가 잘못따라한게 있나해서 Data Manager#2 강의 첨부파일을 받아 다시해봤는데도 마찬가지입니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
부모클래스에서 Init()을 실행하는 부분 질문입니다.
안녕하세요 게임오브젝트를 비활성화 시켜도 Awake() 안에있는 Init()은 실행된다는 것은 이해했는데요 14분 44초에서 부모 클래스 BaseScene.cs에서 Init()을 실행했는데 어떻게 자식클래스 GameScene.cs의 Init()까지 실행이되는건지 잘 이해가 안됩니다. 제 생각으로는 자식클래스에서 어떤 메서드를 오버라이드했더라도 부모클래스에서 그 메서드를 실행하면 부모클래스의 메서드만 실행될거같은데 유니티에서만 가능한건가요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
궁금합니다
락의 기초에서 배웠던 lock함수를 써야할때와 스핀락을 써야할때가 어떻게 다른가요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Init 메서드
혹시 생성자 메서드를 사용하지 않고 Init 메서드를 만들어서 사용하는 특별한 이유가 있나요? 그냥 코딩 스타일인가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
GetComponent에 대해서
이 함수가 해당 게임 오브젝트의 컴포넌트를 불러오는 함수인 거죠? Instance = go.GetComponent<Managers>();의 경우에는 게임 오브젝트 go에 넣어진 @Managers의 Managers란 컴포넌트를 불러와서 Instanc에 넣는 거고요. 그런데 비주얼 스튜디오에서 GetComponent의 설명을 읽어보니 Component GameObject.GetComponent(systerm type type) 라고 되어 있던데 맨 앞의 Component는 왜 붙어있는 건가요? 유니티의 도큐멘테이션에서는 Component.GetComponet라고 되어 있던데 이렇게 쓰면 컴포넌트의 컴포넌트를 불러온다는 건가요???? 마치 인셉션처럼?? 헷갈리네요 ㅜㅜ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
컴포넌트 패턴 질문드립니다
안녕하세요! 강좌 잘 보고있습니다. Component 패턴이 그냥 Class 로 객체지향적으로 분리하는거랑 무슨 차이가 있을까요? 제 입장에선 사진처럼 따로따로 class 로 분리해서 짜는게 너무 당연해보여서.. 디자인패턴으로까지 정리된 이유를 모르겠습니다. 제가 해당 내용에 대해 잘 이해하지 못한다고 생각해 질문드립니다 ㅠㅠ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
편집할때 영상이 잘린 것 갔습니다.
[UpdateMoving]7:09초때는 _destPos = _lockTarget.transform.position; 가 없었는데7:11초때는 _destPos = _lockTarget.transform.position; 코드가 추가 되어 있습니다.다음 영상 "공격 #2" 에서 코드 정리할때 OnMouseEvent 메소드에서 위에 코드가 삭제되면 플레이어가 공격할 때 문제가 생기네요. 혹시 같은 문제가 발생하시는 분들을 위해 남겨놓습니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
return Object.Instantiate(prefab,parent);에 대해 질문있습니다.
1) prefab 파일에서 tank = Managers.Resource.Instantiate("Tank")에서 호출 당함 2) ResourcesManager 파일에서 GameObject를 사용해 prefab 오브젝트를 만들어서 그 안에 Prefabs 폴더 안에 있는 Tank 모델 경로를 가져와서 넣음. 그렇다면 return Object.Instantiate(prefab,parent);에 있는 Object는 prefab를 말하는건가요? Object를 쓰지않으면 자기 자신을 불러오는 재귀함수가 되기때문이라는건 알겠는데 저 Object는 어디서 호출당한건지, 아니면 약속처럼 사용하는 언어인지 혼란이 와서 질문합니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
InputManager에대해 질문이 있습니다.
안녕하세요. 강의를 듣다가 궁금한 부분이 생겨서 질문을 올리게 되었습니다. InputManager를 만들 때 이 매니저를 만들어서 관리하는 이유가 100명의 유저가 모두 PlayerController를 지니고 있고 PlayerController의 Update 함수에서 입력처리를 하면 매 프레임마다 100명의 유저의 Update함수를 호출해야하는데 이러한 방식이 퍼포먼스에 영향을 주기때문에 별도의 매니저를 만들어 Input에 대한 이벤트를 구독시켜 입력이 들어올 때 일괄 처리하려는 것까지는 알겠습니다. 근데 MMO에서 유저들은 모두 PlayerController를 가지고 있을 것이고 키보드 입력 키는 커스텀이 가능하긴 하지만 대부분 디폴트 형태로 사용을 할텐데 만약 W,A,S,D로 이동을 한다고 치면 서버내 한 유저가 W를 입력하면 InputManager에서 키보드 입력 이벤트가 발생했음을 감지하고, 이벤트를 구독중인 모든 객체들에게 이를 전달할텐데 그러면모두 같은 PlayerController를 지니고 있고 이동에 대해 같은 키가 맵핑되어있으니 한명이 W키를 누르면 서버내 모든 유저가 움직이게 되지않나요?? 혹시 현재 InputManager는 오직 서버가 없는 로컬용 게임을 대비해 만든건가요?? 질문과 별도로 강의 정말 너무너무너무 잘 보고 있습니다. 이 강의 덕분에 한층 성장한 느낌입니다. 좋은 강의 정말 감사드립니다. 다음 강의도 기다리고 있겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Visual Studio 에서 Unity 디버깅이 안됩니다.
안녕하세요. Visual Studio 2019에서 "Unity에 연결" 이없어 디버깅이 안됩니다. 어떻게 해야 할까요?
-
해결됨레트로의 유니티 C# 게임 프로그래밍 에센스
Move함수 만들 때 질문있습니다.
moveInput.magnitude를 쓰는 이유가 게임패드를 쓸 때는 1보다 작은 값이 들어올 수가 있기 때문이라고 하셨는데 저걸 쓰면 왜 값이 1이 되는지 모르겠네요. magnitude는 벡터의 크기(길이)를 반환한다고 알고 있는데 게임패드에서 쓴다고 하더라도 예를들어서 moveInput값에 (0.2 , 0)이라는 값이 들어온다면 moveInput.magnitude는 0.2²+0²=0.04가 되어서 1이 안되는거 아닌가요?
-
해결됨레트로의 유니티 C# 게임 프로그래밍 에센스
RawImage 질문입니다
특수한 텍스처를 쓸 수 있다는 말이 어떤 의미인가요?
-
해결됨레트로의 유니티 C# 게임 프로그래밍 에센스
예제 다운로드 질문입니다
파일이 3개 있는데 3개 모두 다운로드 받으면 되나요?
-
미해결유니티 게임 개발 (Unity 2D) - 시작부터 배포까지
강의교안자료
윈도우 사용중입니다자료 이름이 깨지는게 아니라_macosx폴더 안 자료들이 손상되었다고 열리지 않습니다._0.강의소개_note._1.프로젝트구성_note자료가 굳이 필요없는건가요?
-
미해결유니티 2D 로그라이크 게임 만들기 [한글자막]
다들 못찾으시는거같아서
https://assetstore.unity.com/packages/essentials/tutorial-projects/2d-roguelike-29825
-
해결됨레트로의 유니티 C# 게임 프로그래밍 에센스
유니티 최신버전
지금 유니티5를 쓰고있는데 유니티5으로도 강좌 진행괜찮을까요??