질문1. 코루틴은 코루틴이 대기하는 동안 Start()의 다른 함수나 Update() 함수가 진행되는 건가요? 예를들어 밑에 코드에서 cortDT1이 Start()에서 시작하고, 1초 기다리는 동안 Start()의 그 밑에 있는 함수가 실행되는 건가요? 그러면 Update()는 언제 실행되는 건가요? 실행순서가 궁금합니다! public class Cort3 : MonoBehaviour { Coroutine cortDT1; Coroutine cortDT2; // Start is called before the first frame update void Start() { cortDT1 = StartCoroutine(DelayTime(1)); cortDT2 = StartCoroutine(DelayTime(2)); } // Update is called once per frame void Update() { if(Input.GetKeyDown("space")){ StopAllCoroutines(); } } IEnumerator DelayTime(float time){ while(true){ yield return new WaitForSeconds(time); //메인루틴(update함수)으로 양도권 양보 print(time + "초 만큼 경과"); } } }
안녕하세요 항상 수업 잘 듣고 있습니다. 다름이아니라 어셈블리 코드로 보면 ++i가 i++보다 아주 약간의 리소스가 덜든다고 배워 물론 아주 미묘한 차이겠지만 필요한 상황이 아니면 늘 ++i를 쓰려는 습관을 들려고하고있습니다. 근데 선생님 코드는 for문을 돌리든 뭘할때 필요한 상황이 아니면 항상 i++로 코드를 작성하시던데 혹시 어떠한 사유가 있는건지 하여 질문드립니다...
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
main에서 TickRoom함수 내부에서 timer를 이용해서 room.Update를 해주고 room.Update에서는 Flush를 해줍니다. 근데 Flush를 보면 싱글쓰레드처럼 따로 lock을 걸지않고 실행되고 있습니다. 만약에 timer.Interval에 설정한 시간이 지났는데 flush가 다 안끝나서 다른 쓰레드가 flush로 들어오면 멀티쓰레드 환경이 되서 오류가 발생할 수도 있을 것 같은데 이 문제는 현재 코드에서 예외처리를 안해준거죠? https://stackoverflow.com/questions/37747650/do-timers-continue-if-function-didnt-finish 선생님께 찾아보고 질문한다는 성의를 보이기 위해서.... ㅎ..ㅎ
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
다형성에 대해 설명하실 때 부모 클래스의 메소드에 virtual, 자식 클래스의 메소드에 override를 사용하라고 알려주셨는데, 이걸 쓸 때와 안쓸 때의 차이가 무엇인지 잘 모르겠습니다. 해당 코드에서 부모 메소드와 이름이 같아 경고가 발생하긴 하지만, 오버라이딩을 했을 때와 실행 결과는 동일했습니다. 오버라이딩을 하는 것과 안하는 것의 명확한 차이점이 있을까요?
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
(위에 사진은 3d 방향 및 이동 동기화를 성공해서, 뿌듯해서 같이 올려요 ㅎ..ㅎ) 멀티환경에서 3D이동 및 회전을 동기화를 구현할 때, 이전 위치와 현재 위치의 Vector3.magnitude의 차이가 0.1이 나면 이동패킷을 보내줄수있도록 설계를 해서 구현을 했습니다. 혹시 0.1f 차이마다 패킷을 계속 보내는 것도 패킷을 너무 많이 보내는 편인가요? (유저 수는 10명정도가 같은 room에 있도록 만들예정입니다) 항상 감사합니다! 강의를 들으면서 조금씩 바꿔보는데 정말 뿌듯하네요 하하하하하 강의가 너무 유익해요^^
안녕하세요, 설치하는 데 문제가 발생해 질문 남깁니다. .net 5.0 버전은 사용이 종료되어 7.0 버전을 다운 받았습니다. 다운 받은 프로그램은 첫 번째 사진에 표시한 2가지 입니다. 이후 강의 내용대로 프로그램을 실행하였으나, powershell과 visual studio 폴더 열기 모두 해당 오류 코드가 뜨면서 진행이 되지 않습니다. 이 경우에는 어떻게 해야 하는 건가요?
[질문 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에서 BossData.csv에서 TemplateID가 1~3만 존재하는데, if문 조건으로 작성된 , TemplateID<6 Q. TemplateID가 3까지이므로, 6까지 도달할 일 없기 때문에 6으로 작성된건가요? if(TemplateID<6) else() Q.TemplateID가 6까지인데, else가 실행될 일이 있나요? LoadStage -> BossController.SetInfo() Q. 위 코드에서 TemplateID를 가져올 때, if(TemplateID==1) 작성된 부분은 어떤 내용인지, 왜 ID가 1로 작성되었는지 알 수 있을까요? (나머지 2,3의 경우는 알 필요가 없나요?)
안녕하세요 . 시리즈 01 첫 번째 게임을 풀고 있는 와중에 질문이 있어서 글을씁니다 시리즈 01 이니 가벼운 마음으로 수업을 듣고 있었는데요 수학 관련 영상 부터 맨붕이 왔습니다 ㅜ 어쨋든 이부분들을 그냥 코드만 따라 써서 "어 잘돌아가네 " 가 아닌 저의것으로 만들어서 다른게임을 만들때나 혹은 혼자서 만들때 활용할수있게 하고 싶습니다. 씨샵 강의도 다 들었는데 어려우니 빨리 제것으로 만들어보고싶습니다 . 어떤식으로 강의를 듣는게 좋을까요
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 영어가 미숙해서 정확히 이해는 못했지만 { }를 나갔다가 오면 문제가 생기는 듯하다
안녕하세요. 섹션1 유니티 기초 강의 그대로 프로젝트를 생성하면 Test파일을 만들었을 때 솔루션 탐색기에 프로젝트가 80개가 넘게 나옵니다. 강의 화면에서는 솔루션에 프로젝트가 1개만 포함되어있는데, 어떻게 설정하는지 알고 싶습니다. 포함되어있는 프로젝트들은 아래와 같습니다. 없어서는 안될 구성요소들인 것 같은데 강사님의 솔루션은 어떻게 저렇게 깔끔하게 세팅할 수 있는지 궁금합니다. 감사합니다.
영상에서도 설명을 들었는데 갓챠부분이나 서버연동 부분에 대한 언급도있었고 3~4개월짜리 짧은 프로젝트로 계획중이라고 하신걸 들었는데 차후 이 강의에 추가 영상이 올라오나요? 미완성인 부분이 어떤 부분들이 있고 (EX. 갓챠, 서버연동, 그외??) 영상 업로드 계획은 언제쯤인지 궁금합니다!