묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)
Vector2 Vectoe3
계속 Vector2 로 위치값을 잡다가총알의 시작 위치부터 Vector3를 쓰는 이유가 무엇인가요?
-
미해결C# 입문부터 Xamarin Forms(자마린 폼즈) + Maui(마우이) 안드로이드, 윈도우 앱(UWP) 동시에 만들기
안드로이드에서 글자가 안보이는 현상
xamarin으로 프로젝트 생성후최초로 생성된 프로젝트를 apk로 만들어서 핸드폰에서 실행하면글자들이 안보이는 현상(label에 있는 글자들, 버튼에 올라간 글자는 보임) 물론 안드로이드 에뮬레이터에서는 잘보이구요.안드로이드 버전 11로 컴파일함
-
미해결[실전 게임 코드 리뷰] 유니티 캐주얼 게임 (엘리스팡)
SkeletonAnimation / Controller - Manager
[질문 List]#1 (Q1, Q2, Q3) , #2 총 4개 입니다.#1 SkeletonAnimation 제어BossController.cs에서 SkeletonAnimation 파일이 재생되는 부분에서 좀 더 알고 싶은 점이 생겨서 질문드립니다.[질문]시작 끝 지점에 대한 처리 -> 관련 질문 Q1,2,3구현하고 싶은 것특정 애니메이션이 끝나고 나서 어떤 팝업을 띄우고 싶은데, 트랜지션 느낌으로 SpineAnimation을 재생시키고 싶은데, 시작/끝 지점에 대한 처리를 어떻게 할지 알고 싶습니다.[[TestPopup 프리펩]] -Transition (SpineAnimation 컴포넌트 존재) - Viewport - UI 버튼, 텍스트 요소들 존재 [[TransitionController.cs]] SkeletonAnimation _spineAni; SkeletonDataAsset ani; bool b; void Init() ani = Resources.Load<SkeletonDataAsset>(string path); StartCoroutine(CoStart()); IEnumerator CoStart() _spineAni.skeletonDataAsset = ani; _spineAni.loop = false; _spineAni.Initialize(true); yield return new WaitUntil( () => b == true) [[TestPopup.cs]] [SerializeField] TransitionController tc; [SerializeField] GameObject viewport; //실행시킬 SpineAnimation 오브젝트 "Transition" 연결시키기 [SerializeField] GameObject go; void Awake() viewport.SetActive(false); tc = go.GetComponentInChildren<TransitionController>(); tc.Init(); => 이후, Q1이 해결될경우 viewport.SetActive(true) 작성 시점 확인 가능. Q1.Animation이 끝났을 때, viewport.SetActive(true)로 바꿔주려고 할 때, 어떻게 코드를 작성하면 좋을지 고민입니다.Transition이 재생 완료되었다는 event를 Popup에게 넘겨주는 방식을 생각하고 있는데 방향성이 맞나요?Q2. spineAni.loop = false 로 설정해도,애니메이션 타임만 증가하여 영원히 돌아가는 걸로 나온다고 알고 있는데, TransitionController에서 애니메이션을 1회만 실행하도록 코루틴으로 1회만 실행하고, 2회부터는 실행되지 않도록 WaitUntil로 멈추는게 옳은 로직일까요?SetAnimation은 SkeletonGraphic만 가능하다고 해서, 스파인 애니메이션을 1회만 실행시키는 방식이, spine 프레임워크 상에 구현되어있는데 제가 못찾는건지.. ( 제가 찾을땐 못 찾았습니다 )아니면, 없다고 가정하고 코드상으로 구현할 때, 저렇게 구현하는게 맞을지 궁금합니다.Q3. TestPopup 프리펩처럼, 어떤 팝업이 실행되기 전 spine 트랜지션 효과를 주고 싶을 때, TesoPopup 산하의 자식 오브젝트인, Transition / Viewport 오브젝트로 분리해서, Transition이 실행 중일때는 Viewport를 SetActive(false), 실행 완료되었을때 ViewPort.SetActive(true)를 해주는 방식으로 코드를 작성하는게 괜찮은 방법일까요? #2 Controller ⊂ Manager ?Controller는 M V C 패턴 중, V에 해당하는 부분을 전부 포함하고 있는 코드라고 보면 될까요?제가 생각한 관련 MVC 패턴은 이렇습니다만, 제가 이해한게 맞는지 궁금합니다.View : Controller Code,Model: GameScene처럼 Scene코드 / GameManager / UI_ .. 구조적으로 GameManager가 로직을 전부 담고 있는게 맞지만, 편의성/가독성을 위해 Scene코드나 로직이 필요한 UI코드에 함께 적는 것도 가능하다.Control : (ex : UI_GameScene) UI Code
-
미해결[실전 게임 코드 리뷰] 유니티 캐주얼 게임 (엘리스팡)
BossController.cs
안녕하세요. BossController.cs에서 BossData.csv에서 TemplateID가 1~3만 존재하는데, if문 조건으로 작성된 , TemplateID<6Q. TemplateID가 3까지이므로, 6까지 도달할 일 없기 때문에 6으로 작성된건가요? if(TemplateID<6) else()Q.TemplateID가 6까지인데, else가 실행될 일이 있나요?LoadStage -> BossController.SetInfo()Q. 위 코드에서 TemplateID를 가져올 때, if(TemplateID==1) 작성된 부분은 어떤 내용인지, 왜 ID가 1로 작성되었는지 알 수 있을까요? (나머지 2,3의 경우는 알 필요가 없나요?)
-
미해결[유니티6] 따라하면서 배우는 하이퍼캐주얼게임 시리즈 01
수업관련 질문이 있습니다
안녕하세요 . 시리즈 01 첫 번째 게임을 풀고 있는 와중에 질문이 있어서 글을씁니다 시리즈 01 이니 가벼운 마음으로 수업을 듣고 있었는데요 수학 관련 영상 부터 맨붕이 왔습니다 ㅜ 어쨋든 이부분들을 그냥 코드만 따라 써서 "어 잘돌아가네 " 가 아닌저의것으로 만들어서 다른게임을 만들때나 혹은 혼자서 만들때 활용할수있게 하고 싶습니다. 씨샵 강의도 다 들었는데 어려우니 빨리 제것으로 만들어보고싶습니다 . 어떤식으로 강의를 듣는게 좋을까요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
[에러 공유] disposeed object
args.connectedSocket을 socket으로 줄여쓰고 싶어서 이렇게 코드를 짜면 계속 disposed object 에러가 난다. 해결법 : socket변수를 따로 만들지 말고 루키스 선생님의 코드처럼 그냥 args에서 connectsocket을 가져와야된다. https://stackoverflow.com/questions/71450166/when-is-an-object-disposed-if-it-uses-using-and-it-is-being-used-in-a-few-meth 영어가 미숙해서 정확히 이해는 못했지만 { }를 나갔다가 오면 문제가 생기는 듯하다
-
미해결유니티 Addressable 을 이용한 패치 시스템 구현
/ 가 URI 인코딩 문제로 %5C로 내려 받습니다 ㅠㅠ
안녕하세요 ㅠㅠ 강의대로 했는데용 ...아마존 S3로 내려 받는데 요청 받을때 /Android%5C 부분에서 %5C가 /로 요청을해야하는데 어디에선가 인코딩 문제가 생긴것같습니다 ㅠ.ㅠ 아래에 로그 전체를 보내 드리겠습니다 ! ==============================2023-06-28 04:04:33.168 32354-32393/? E/Unity: System.Exception: Dependency Exception ---> UnityEngine.ResourceManagement.Exceptions.OperationException: GroupOperation failed because one of its dependencies failed ---> UnityEngine.ResourceManagement.Exceptions.RemoteProviderException: RemoteProviderException : Unable to load asset bundle from : https://s3.ap-northeast-2.amazonaws.com/com.blackhammer.assetbundle/Android%5Cremote_bundle_assets_all_f923192b886d03258296e7bc56c4d786.bundle UnityWebRequest result : ProtocolError : HTTP/1.1 403 Forbidden ResponseCode : 403, Method : GET url : https://s3.ap-northeast-2.amazonaws.com/com.blackhammer.assetbundle/Android%5Cremote_bundle_assets_all_f923192b886d03258296e7bc56c4d786.bundle --- End of inner exception stack trace --- --- End of inner exception stack trace --- UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:set_OperationException(Exception) UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:Complete(TObject, Boolean, Exception, Boolean) UnityEngine.ResourceMan2023-06-28 04:04:33.168 32354-32393/? E/Unity: Dependency Exception UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:set_OperationException(Exception) UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:Complete(TObject, Boolean, Exception, Boolean) UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:InvokeExecute() UnityEngine.ResourceManagement.AsyncOperations.<>c__DisplayClass57_0:<add_CompletedTypeless>b__0(AsyncOperationHandle`1) System.Action`1:Invoke(T) DelegateList`1:Invoke(T) UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:InvokeCompletionEvent() UnityEngine.ResourceManagement.ResourceManager:ExecuteDeferredCallbacks() UnityEngine.ResourceManagement.ResourceManager:Update(Single)
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
Dictionary로 대화창 만드는건 가능할까요?
Dictionary는 메모리를 내주고 성능을 취한다 했는데 큰게임에 쓰면 메모리 손해가 심할텐데 Dictionary로 대화창 만들 수 있을까요?
-
해결됨[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
비주얼스튜디오 프로젝트 설정 관련
안녕하세요.섹션1 유니티 기초 강의 그대로 프로젝트를 생성하면Test파일을 만들었을 때 솔루션 탐색기에 프로젝트가 80개가 넘게 나옵니다. 강의 화면에서는 솔루션에 프로젝트가 1개만 포함되어있는데, 어떻게 설정하는지 알고 싶습니다. 포함되어있는 프로젝트들은 아래와 같습니다. 없어서는 안될 구성요소들인 것 같은데 강사님의 솔루션은 어떻게 저렇게 깔끔하게 세팅할 수 있는지 궁금합니다.감사합니다.
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
이 강의는 아직 완성되지 않은 강의인가요?
영상에서도 설명을 들었는데 갓챠부분이나 서버연동 부분에 대한 언급도있었고 3~4개월짜리 짧은 프로젝트로 계획중이라고 하신걸 들었는데 차후 이 강의에 추가 영상이 올라오나요? 미완성인 부분이 어떤 부분들이 있고 (EX. 갓챠, 서버연동, 그외??) 영상 업로드 계획은 언제쯤인지 궁금합니다!
-
미해결[실전 게임 코드 리뷰] 유니티 캐주얼 게임 (엘리스팡)
랜덤 확률 계산
안녕하세요. 관련 프로젝트 클론 코딩하던 중, 질문이 생겨서 적어봅니다.목표 : 누적확률(시행마다 가중치 X) 없이 독립시행으로, 확률에 따른 이벤트 발생#과정 1.float _rand = Random(0f,1f)=====#과정2. 0.5f를 기준값으로 계산ex)시행 1: _rand = 0.6f시행 2: _rand : 0.2f=> 시행 1 -> 1 - 0.6 = 0.4f=>시행 2 -> 0.5보다 낮으므로 0.2f=====#과정3.2에서 계산된 _rand값을 기준으로 해당되는 확률 테이블의 데이터를 가져올 때, 시행 1 -> 0.4f이므로, acqPercent 0.4 이하인 요소들을 전부 List로 끌고 온 뒤, 그 List에서 랜덤으로 뽑음=====질문 : 이러면 처음에 rand로 나온 값이 의미가 없어지고 rand 미만의 요소들이 담긴 list에서, 1/list 갯수 만큼의 확률로 계산되는거 같은데 ( 원래 설정한 0.005, 0.1 이런건 무시되고 )아예 확률표를 잘못 작성했다던가 계산법이 잘못된거 같은데 잘 모르겠습니다 ㅠㅠ참고자료 : 엑셀 표 ( 총 확률은 0.7 , 나머지 0.3은 아무것도 발생시키지 않도록 설정)
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
sprite가 load되지 않습니다 2
6월 15일 같은 질문이 나왔었는데요,해당 질문글에 답변으로 적어주신 방법을 써서 스프라이트로 변환해서 잘 돌아가긴 하는데요, 아직 이해가 되지 않아 추가질문 드립니다.강의에서는 texture로 받지 않기 위해 ResourceManager.cs에서 키값을 EXPGem_01.sprite[EXPGem_01]으로 바꾸는 과정을 거쳤는데요, 그럼에도 불구하고 왜 변환이 안된 건가요? 강의에서는 잘 작동하는 것처럼 보입니다만,..혹시 유니티 버전에 따라 작동을 안하는 것일까요? 현재 22.3버전으로 쓰고 있습니다. 강의상 10분쯤에 해당내용 있습니다.감사합니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
ResourceManager를 구현하면서 궁금한점
1. Resources.Load 함수를 사용하는 것은 성능상 좋지 않아 잘 안쓴다고 들었었는데 사용할 리소스들을 Inspector창에서 다 받아서 사용하는 방법은 너무 노과다 일거 같고 지금과 같은 구조라면 저걸 사용하는데에 있어선 무리가 있다는 생각이 들어서 궁금합니다. 2. 저런 리소스들을 관리 하는데 Dictionary 말고 List가 성능상으로 훨씬 좋다고 들었습니다. 그런데 List를 사용하면 탐색 시간에서 오래 걸리지 않을까라고 생각 하는데 이 부분은 어떤식으로 관리하나요 ?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
textRPG1에서 체력이 2배로 까이는 현상
안녕하세요 선생님텍스트 rpg1 강의에서 선생님이 프로그램을 시연하실 때 정상적으로 플레이어의 체력이 까일 때도 있지만 2배로 까이는 경우도 생기던데 이건 왜 그런건지 궁금합니다!
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
vs 2019에서 함수들 색상이 강의처럼 안변하는데 어느 설정을 바꾸면 될까요?
원래라면 Getkey랑 TransformDirection같은 함수가주황색으로 나와야하는데 이런식으로 하얗게 나오네요비주얼스튜디오 2019버전입니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Fixed Duration 관련해서 질문드립니다.
State Machine #1 강의 말미에 Fixed Duration의 체크 여부에 따라 Exit Time과 Transition Duration 내에 기입된 수치가 비율에서 초로 변환된다고 말씀하습니다.제가 이것저것 만져본 결과 Exit Time은 Fixed Duration 체크 여부에 상관 없이 무조건 비율인 것 같습니다.반면에 Transition Duration은 Fixed Duration이 체크되었을 때는 초, 그렇지 않을 때는 비율로 적용되는 듯합니다. 확인 부탁드립니다..https://docs.unity3d.com/kr/2018.4/Manual/class-Transition.html
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
강의 관련 질문!(화살 파트)
안녕하세요 루키스님.MMORPG 시리즈 Part7 화살 #1 ~ 화살 #2 를 수강하다가 궁금한 점이 있어서 질문을 올립니다.궁금한 부분은 화살을 생성하는 부분인데요. 제가 이해하기로는 화살 스킬을 사용하는 과정이 클라에서 스킬 사용 패킷을 보냄(C_Skill) -> 서버 C_SkillHandler를 거쳐 GameRoom.HandleSkill 에서 처리 -> 이 때 GameRoom.EnterGame(Arrow)로 화살 입장 -> 본인 클라이언트와 다른 플레이어의 클라이언트에 스폰패킷(S_Spawn)을 보냄 ->각 클라이언트에서 ObjectManager.Add로 화살을 스폰하는 것으로 이해했습니다.강의 코드에서, Gameroom에서 EnterGame(Arrow)를 실행하면 Arrow는 Projectile 타입이므로 if 문에 걸려 본인 클라에 Spawn패킷을 뿌리지 않고 다른 클라에만 뿌리는 것으로 작성이 된것 같은데... Player 타입이 GameRoom의 인자로 들어왔을 때만 본인 클라에 패킷을 전송하는 것 같거든요. 그런데 실행하면 화살이 잘 날아갑니다. 어느 단계에서 화살이 생성되는지 모르겠습니다. 어느 부분을 잘못 이해했을까요? 강의 코드 그대로 입니다.public void EnterGame(GameObject gameObject) { if (gameObject == null) return; GameObjectType type = ObjectManager.GetObjectTypeById(gameObject.Id); lock (_lock) { if (type == GameObjectType.Player) { Player player = gameObject as Player; _players.Add(gameObject.Id, player); player.Room = this; Map.ApplyMove(player, new Vector2Int(player.CellPos.x, player.CellPos.y)); // 본인한테 정보 전송 { S_EnterGame enterPacket = new S_EnterGame(); enterPacket.Player = player.Info; player.Session.Send(enterPacket); S_Spawn spawnPacket = new S_Spawn(); foreach (Player p in _players.Values) { if (player != p) spawnPacket.Objects.Add(p.Info); } foreach (Monster m in _monsters.Values) spawnPacket.Objects.Add(m.Info); foreach (Projectile p in _projectiles.Values) spawnPacket.Objects.Add(p.Info); player.Session.Send(spawnPacket); } } else if (type == GameObjectType.Monster) { Monster monster = gameObject as Monster; _monsters.Add(gameObject.Id, monster); monster.Room = this; Map.ApplyMove(monster, new Vector2Int(monster.CellPos.x, monster.CellPos.y)); } else if (type == GameObjectType.Projectile) { Projectile projectile = gameObject as Projectile; _projectiles.Add(gameObject.Id, projectile); projectile.Room = this; } // 타인한테 정보 전송 { S_Spawn spawnPacket = new S_Spawn(); spawnPacket.Objects.Add(gameObject.Info); foreach (Player p in _players.Values) { if (p.Id != gameObject.Id) p.Session.Send(spawnPacket); } } } }
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
텍스트 UI를 생성했는데 이게 떴는데 어떻게 할까요?
(사진)
-
미해결C# 프로그래밍 기초
혹시 이 강의랑 같이 볼만한 책 추천해주실 수 있으실까요?
안녕하십니까? 현재는 For문 실습 2탄을 보고 있는 사람입니다.다름이 아니라 회사에서 유니티를 하고자 C#을 같이 공부하고 있는데, 지금까지 강의를 중간에 빼먹는것 없이 다 보고 있습니다만, 솔직히 저의 실력으로는 강의만 보고는 이해하지 못하고 따라가기만 하는 것 같아서 책이랑 같이 공부하면 좋을 것 같습니다.다행히 이 강의가 기간제가 아니라서 얼마든지 다시 공부할 수는 있지만, 이왕이면 책이랑 같이 봐야 머릿속에 더 잘 들어올 것 같아서 이런 질문을 남깁니다.혹시 같이 볼만한 책을 추천해주실 수 있으신가요?그리고 저술하신 책이 있는지도 궁금합니다.
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
비주얼스튜디오 솔루션탐색기 관련 질문입니다
안녕하세요, 비주얼스튜디오 툴과 관련하여 질문이 있습니다.강의영상 내 루키스님 비주얼스튜디오를 보면 솔루션에 프로젝트가 1 프로젝트의~라고 뜨는데요, 저는 83개의 프로젝트가 포함되었다고 나옵니다.아래 사진처럼 Assembly-CSharp 이외의 프로젝트들을 언로드하면 빌드에러가 나는 문제가 생기는데요, 강의하시는 화면내 솔루션은 어떻게 프로젝트가 1개만 로드되어있는지 궁금합니다.감사합니다. 그리고, 좋은 강의 만들어주셔서 감사합니다.제가 오랫동안 찾던 이상적인 개발강의이기에, 정말 감사히 생각하며 듣고 있습니다.건강하세요.