묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결WPF (.NET Core, C#, 자막제공)
이벤트에 대해서 감사합니다.
가장 기초적인 부분을...몰랐네요가끔 원하는 것처럼 이벤트가 작동하지 않을 때가 있었는데,,,그게 routing 시키는 걸 e.Handled를 true로 처리하면 된다는 것을 알았습니다.C# 의 WPF의 이벤트는 복잡하네요..Vue 같아요..;;;MVVM패턴으로도 알려준 이벤트에 대한 특성은 참고해서 작업하면 되는걸까요?
-
미해결ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
12강 듣던중...Controller.cs 질문입니다.
HomeController.cs 에서 LoginController.cs 확장하고 NewUser 도 분리할때 발견 한건데요...한참 헤맸네요...LoginController -> LoginContloller 즉 Controller 스펠링은 규칙 정의된 용어 인가요? 이게 다르면 404notfound 뜨더라고요어차피 상속 받았고 클래스 이름 같으면 되는거 아닌가 했는데...Views 폴더도 마찬가지인지....그 안에 폴더 이름을 Home이 아닌 hom 으로 사용하고 진행할 경우 인지가 안되나요?몬가 절대 변경되면 안되는 것들이 있는것 같아서요 그리고 ASP.NET CORE 웹 서버 개발하면 디버깅 노하우 강의도 해주셧으면 좋겠어요....이게 웹으로 넘어오니 디버깅이 쉽지 않네요 ㅋㅋㅋ
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
씬의 기즈모 조절
섹션3. 캐릭터 공격 시작부분에서 씬 화면에 있는 이런 기즈모들은 어디서 조절 가능한가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
[수업 질문] [SpinLock]
class SpinLock { volatile int _locked = 0; private readonly object _lock = new object(); public void Acquire() { while (true) { //int original = Interlocked.Exchange(ref _locked, 1); //if (original == 0) // break; // CAS : Compare-And-Swap //int original = Interlocked.CompareExchange(ref _locked, 1, 0); //if (original == 0) // break; //int expected = 0; //int desired = 1; //if (Interlocked.CompareExchange(ref _locked, desired, expected) == expected) // break; lock (_lock) { if (_locked == 0) { _locked = 1; break; } } } }DeadLock 시간에 배웠던 lock 방식을 이용해서 작성해봤는데 출력 값은 0이 잘 나옵니다. Q. SpinLock 구현할 때 InterLock 계열의 메서드를 사용해 구현한 것과 lock을 이용해 구현한 것은 어떤 차이가 있는지 궁금합니다.강사님께서는 InterLock 을 통해 구현하셨는데 그 이유는 간단하게 사용할 수 있기 때문인가요??SpinLock / BackOff Lock / Assisted Lock 이런 것을 구현할 때 위와 같이 lock 을 써서 구현하는 것은 구조적으로 잘못된 것인가요?? 제가 이해한 것은 Lock 방식과 InterLock 방식은 하드웨어의 Instruction을 원자적으로 처리하기 위해 프로그래머가 C++/C# 같은 언어로 시키기 위한 방법인 것 같은데 이해를 똑바로 한 것인지 궁금합니다.
-
미해결WPF (.NET Core, C#, 자막제공)
StartupUri
안녕하세요. C# WPF 학습 중인 사람입니다.다름 아닌, 기존 MainWindow.xaml를 만든 Views 폴더에 넣고 App.xaml의 startupUri에서 Views/ 폴더 경로만 추가해주었는데요.정상적으로 작성되는 것을 확인했습니다.해당 프로젝트명을 변경했다면, Views/ 변경한 View.xaml 로 설정해주면 되는 걸까요?추가적으로 주의할 점이 있다면 무엇이 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
특성이 중복되었다고 나옵니다
안녕하세요, 선생님프로젝트 속성 변경후 PacketGenerator 빌드를 눌러야 하는데 모르고 디벙깅 후 시작을 눌러버려서 그런지 모르겠지만AssemblyInfo.cs 파일에서 특성이 중복되었다고 나옵니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
근접 공격 강좌에서 NRE이 발생하는데 시점 문제로 발생한 문제인지 이슈를 쳐내기가 곤란합니다.
이러한 이슈가 발생해 찾은 결과 Monster Script의 37번 째 줄인 FindClosetTarget 함수에서 타겟을 찾지 못해 NPR이 발생한 내용으로 확인되었는데Spawner에 Players를 넣어주어 플레이어인 Cleric과 Barbarian이 잡히나, 간헐적으로 Null을 return 해주는 현상이 발생하는데, 이게 Update 문 안에서 실행되어 FindClosetTarget 구문이 매우 빠른 속도로 실행되어 발생한 시점 문제인지 궁금합니다. 현재 강사분과 코드는 동일한 것으로 확인됩니다.
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
안드로이드 빌드에서는 LoadAllAsync , LoadAsync 가 동작 하지 않고 있습니다.
안녕하세요.강의를 마지막까지 공부하고, 에디터에서 실행할시에 잘 동작 함을 확인 했습니다.그런데, 안드로이드 빌드를 해보면 빌드 실패도 하지 않습니다.생성된 APK 를 핸드폰에도 넣어보고, 녹스플레이어, 블루 스택에서 넣어서 실행해보면 파란 에디터에서 보이는 최초 파란 화면만 뜨고, 게임씬이 동작 하지 않고 있습니다.혹시나 해서, UI_TextMeshPro 에서Text 를 넣고, 테스트하던중 에디터 실행할때는 bbb 가 출력되고, 게임도 잘 돌아가는데, 안드로이드 플레이어나, 모바일 기기에서는 aaa 까지만 출력되고 다음줄이 실행 되지 않습니다. 비동기를 디버그 해보려고 노력했는데, 에디터에서는 오류가 나지 않고,F11 눌러서 한단계씩 들어가다보면 "모듈에 프레임 없음" 페이지가 나오고, 어드레서블에 있는 목록이 Resource 에 채워지는 것을 확인 하기가 어렵습니다. 비동기 이후에는 Resource 에 22개 딕셔너리가 채워진것을 확인 가능하긴 하더군요. 해결이 몇일째 안되고 있는데, 도움 부탁드립니다.public TextMeshProUGUI textComponent; // Start is called before the first frame update void Start() { textComponent.text = "aaa"; // "F:\p4v\TangTang\Assets\Scripts\Scenes\GameScene.cs" Managers.Resource.LoadAllAsync<Object>("PreLoad", (key, count, totalCount) => { Debug.Log($"로딩바 추가 {key}, {count}/{totalCount}"); if (count == totalCount) { textComponent.text = "bbb"; // Debug.Log("test"); // StartLoaded(); } }); }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
동기방식과 비동기 방식 비교
루키스님 안녕하세요?소켓 함수쪽에서 동기방식과 비동기방식의 장단점을 고찰하고 있습니다. 이번 강의에서 Listen쪽을 동기 -> 비동기로 전환하면서 논블로킹 성질로 인해 어느 누군가의 입장 지연 등을 기다려도 않아도 되므로 그런 부분에서 이점이 있다.이렇게 이해를 하였는데요, 입장자 별로 스레드를 부여하여 동기적으로 입장시킴. 단, 너무 지연이 되면 해당 스레드는 종료 등으로 처리.이런 식으로 동기적 방법을 고수하면 콜백 함수 없어도 되니까 코드 복잡도도 줄고 컨텍스트 스위칭도 덜 일어나지 않을까? 라는 생각을 하게 되었습니다. 그러므로 동기적으로 소켓 함수를 계속 사용하는 것은 잘못된 생각인지, 아니면 비동기 동기가 각각 장단점이 있는 방식인지 루키스님 조언 얻으려고 질문 드립니다. 답변 미리 감사합니다. +수정 이 내용과 같은 맥락일까요?그렇다면 Listen과 Accept는 동기, Send와 Receive는 비동기로 처리 이런 방식은 어떤지 고민도 되고 하네요https://www.inflearn.com/community/questions/140160/%EA%B5%B3%EC%9D%B4-%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B0%A9%EC%8B%9D%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
FindObjectOfType Deprecated오류가 발생하는데요.
LobbyUIController = FindObjectOfType<LobbyUIController>();강의대로 위의 코드로 진행하는 과정에서 오류가 있어서.. LobbyUIController = FindFirstObjectByType<LobbyUIController>();이렇게 수정하라고 나오는데, 이 때문인지 로비 쪽의 Scene을 로드하면 Log에서 아래와 같이 Error가 찍힙니다.NullReferenceException: Object reference not set to an instance of an objectLobbyManager.Start () (at Assets/Scripts/Lobby/LobbyManager.cs:23)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
15-17분
103번이 room인데 room.Next.Prev 가 103이 되는게 아니라 102 가 된다는 것이 이해가 잘 되지 않습니다. 앞으로갔다가 뒤로 가면 자기 자신 이라고 생각했는데 잘 모르겠어요
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
R키를 2초 누르면 재시작 하도록 구현하고 싶은데 이상합니다
R키 2초 누르면 SceneLoader의 ReLoadScene으로현재 씬을 재시작하도록 했습니다.재시작할 때 사진처럼 되면서 살짝 딜레이가 생깁니다.public bool RDown = false; // R 키를 눌렀는가? // true: 누르는 중 public float RDownTime = 0.0f; // R 키를 몇초 눌렀는가? private void Awake() { setting = transform.GetChild(0).gameObject; } protected override void HandleInput() { base.HandleInput(); RDown = Input.GetKey(KeyCode.R); if (RDown) { Debug.Log("R 키 누르는 중"); RDownTime += Time.deltaTime; if (RDownTime > 2.0f) // R버튼 2초 누르면 재시작 { SceneLoader.Instance.ReloadScene(); } } else // 누른 시간 초기화 { RDownTime = 0.0f; } //if (!RDown) // 누른 시간 초기화 //{ // RDownTime = 0.0f; //} } public void OnClickReStartBtn() // 재시작 버튼 구현 { SceneLoader.Instance.ReloadScene(); } HandleInput 함수는 부모 클래스 Update에서 호출 중입니다. 추가로 여기에 R키 사용에 있어 쿨타임을 줄 수 있을까요?씬이 재시작되면서 쿨타임 체크하는 부분도 씬 재시작으로 인해 초기화가 되지 않을까 걱정입니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
SetCanvas에는 Stack Push를 안해도 되나요?
SetCanvas 함수에서 true 일 때 _order++ 은해서_order값은 올라 가는데 Stack에는안올라 가는거 같은데 별로 상관 없는 걸까요?
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
일시정지 질문
PauseGame 함수에서 쓰이는 GameManager는 어디에서 가져오는 건가요?강의에서 만든 스크립트인가요? 제가 놓친 건지...
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
스테이지 로드 다른 방법 질문
InGame 씬에서 프리펩된 스테이지들을 불러오셨는데스테이지 마다 씬을 만들어서 씬을 불러오는 방식은 어떤가요?스테이지가 10개 정도 된다면 어떤 방식이 더 좋을까요?
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
CPU를 과도하게 점유하면서 멈추는 현상
안녕하세요 쓰레드 배분 강의 소스 코드부터 현재 강의까지, 서버가 정상적으로 동작하지 않는 현상이 있어 확인 요청드립니다.DBThreadJob 메서드에서 _executeQueue가 비어 있을 때 루프가 무한히 반복되면서 CPU를 과도하게 점유하는 문제가 있는 것 같습니다. 저는 macOS에서 서버를 실행 중인데, Windows와의 CPU 스케줄링 차이로 인해 발생하는 문제로 추측됩니다. 확인해주시면 감사하겠습니다!
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
애니메이션
안녕하세요 애니메이션 작업 하실때 시간 나누어 주는거 기준이 있나요 ?? 한개당 5초씩 잡아 주는게 좋은가요 ?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
.net core가 중단되었다고 하네요..
.net core가 중단되었다고 하네요..
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강의에서 만드신 코드들에 대한 짧은 질문
안녕하세요.본인은 게임 클라이언트 개발자를 희망하지만,인디게임 수준의 서버는 직접 만들기 위해본 강의를 3회독 하는 중입니다. 강의해 주신 코드들은예를들면 Listener 클래스를 직접 만드셨는데,TcpListener이란 클래스가 있더라고요.대형 게임 회사는 자체적으로 서버를 구축하니까Listener클래스를 비롯한 모든 서버를 최대한 하드코딩 하는건가요?TcpListener같이 구현되어있는 것들을 사용하지 않는 이유가 있을까요?물론 Listener 클래스를 직접 만들면서 지식이 깊어지고 그런건 매우 좋습니다. 하지만 제가 배우고 작성하는 클래스들의 완성의 수준을 가늠잡을 수 없어 불안합니다. 그래서 일부 클래스들은 TcpListener 같이 이미 나와있는 클래스들을 섞어가며 사용해보고 싶은데 이런 부분에서 강사님 의견이 궁금합니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
파이어베이스 유저 저장 주기가 고민되요.
첫번째 질문..유저데이터 저장을 위해서 주기적으로 파이어베이스 리얼타임 데이터베이스에쓰기로 저장을 해주고 싶은데요.. 요즘 파이어 베이스에 관심을 가지고 이래저래 알아보고있는데1분주기로 데이터를 리얼타임데이터에 쓰기(저장)을 하게되면 유저가 적을경우는 괜찮을수있겠지만, 왠지.... 많은 유저가 접속을 한 상황에서그 유저들의 데이터가 1분마다 저장이 계속 된다면 파이어베이스 서버이용요금?? 도 엄청날것같은데일정시간마다 주기적으로 파베에 저장되게 해도 괜찮을까요?한명 유저당 파베에 아무리 자주 저장하더라도 파베 사용량 데이터량 변화는 크게 없는것인지...아직 파베에 대한 지식과 파베 요금 관련해서 아무런 개념이 없어서인지 잘 모르겠네요 ㅜㅜ ----------------------------------------------------------------------------------------두번째 질문..게임을 빌드 한 후 APK 파일을 앱플레이어(녹스, LD플레이어)에 설치후 플레이 하다가(정상적인 게임종료를 누르는게 아닌, 상단탭의 x버튼을 눌러서) 강제로 게임을 꺼버리는경우 OnDestroy 함수가 제대로 호출이 안되는건지.. 게임 데이터를 저장하지않은채로게임이 꺼지더라구요.(혹시나해서, OnApplicationQuit() 함수와 OnDestroy() 함수 내용에도 게임이 꺼지거나파괴될때 '파베에 쓰기'가 되게 코드를 짰을때, 정상적으로 백버튼을 눌러서 게임종료하겠다는버튼을 누르면 저장이 잘됬는데, 갑자기 또는 강제로 게임이 의도치 않게 게임이 꺼지게되면 데이터가 저장이 안되던데... 혹시 좋은 방법이 있을까요?? )