묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[유니티 실전 프로젝트] Burger Please 모작
NullReferenceException 에러
안녕하세요. 튜토리얼과 세이브 파일 강의 수강하고 코드를 그대로 작성했는데 해당 널 에러가 발생합니다. NullReferenceException: Object reference not set to an instance of an objectGameManager+<CoInitialize>d__12.MoveNext () (at Assets/@Scripts/Manager/GameManager.cs:46)UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at <28bc61a429714536ab08181feb5cfb97>:0)UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) public IEnumerator CoInitialize() { yield return new WaitForEndOfFrame(); Player = FindAnyObjectByType<PlayerController>(); Restaurant = FindAnyObjectByType<Restaurant>(); int index = Restaurant.StageNum; Restaurant.SetInfo(SaveData.Restaurants[index]); //26번째 줄 StartCoroutine(CoSaveData()); }널 체크를 해봤는데도 Player와 Restaurant 모두 널이 아닙니다.그래서 Restaurant의 SetInfo() 함수 부분을 봤더니 Restaurant의Restaurant Systems와 Props들이 전부 비어있습니다.근데 코드 상으로 널 체크해서 디버그를 출력하도록 해도 디버그가 찍히지 않습니다. 필요한 Props들 전부 UnlockableBase를 상속하였고 RestaurantSystemes도 SystemBase 상속하고 자식 오브젝트에 위치하고 있고 코드도 전부 동일합니다. SetInfo 함수의 호출 순서의 문제 일까요? 어디의 문제인지 어딜 수정해야하는지 모르겠습니다 ㅠㅠ
-
해결됨C# 프로그래밍 기초부터 실전 활용까지
thread join 사용
안녕하세요. .thread 연습 하다가 물어 볼꺼 있어서요... Winform에 쓰레드를 생성했습니다. thread 파일을 초기엔 null로 했습니다. 그리고 작업을 진행하다가 아래 StartThread를 호출 합니다. private void StartThread(){ if (thread == null) { thread = new Thread(new ThreadStart(GoThread); GoThread.IsBackground = true; GoThread.Priority = GoThread.Normal; GoThread.Start(); } if (!GoThread.IsAlive) { GoThread.Start(); } GoThread.Join(); // 호출 함수가 끝날때까지 대기 해보자. -- 여기 질문 thread = null; // null을 넣는건 좀 부담 스러움 } // 쓰레드 함수 진행void GoThread(){ try { while (queue.Count != 0) { // 큐에 쌓여 있는 작업 진행 queue.Dequeue();// 쓰레드 안에 있으니 아래 처럼 인보크 사용해서 지행 this.Invoke((MethodInvoker)delegate { textBoxOutputLog.Text = ResultLog; }); Thread.Sleep(1); } } // 작업 완료 아래 처럼 null을 쓰고 싶은데 null을 넣기에는 부담 그래서 호출한 함수에서 join으로 대기해보자. //thread= null;}질문 입니다. GoThread.Join() 을 하니깐 쓰레드 함수가 다 종료가 될때까지 formview가 멈춥니다. 흠.... 원래 join이 스레드가 종료될때까지 기다린다는건 알겠는데 UI 진행도 멈추는건지 궁금 하네요...그리고 쓰레드에 null을 넣는건 좋은 방법 인가요? 아 그리고 이건 부가적인 질문인데 ..클레스가 생성하면 자동으로 종료되는건 알고 있습니다. 프로그램에서 직접 종료하는 방법 없을까요?? 이유을 설명하자면클래스 생성 . 작업 진행 .. 진행중 쓰레드 처리 ... 쓰레드 처리 끝... (할일을 다함).. 종료... (이게 너무 오래 걸림) C++에는 delete 가 있는데 .. 어째거나 이렇습니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
혹시 섹션별 스크립트 소스 있으신지요?
안녕하세요? 선생님구매해놓고 인제서야 틈틈히 보고있습니다.다름이 아니고 소스분석을 하면서 강좌를 보고싶은데 (완성형 소스는 질문 게시판 답변에 링크를 통해서 받았습니다.) 완성형 소스로는 섹션별 영상을 보면서 분석하기 어렵겠더라고요. 유데미를 보면 섹션별로 소스가 제공되는경우가 있는데있으시다면 공유 해주실수있으실까요?(일일이 타이핑하면서 따라가는것보다 영상에 맞는 소스를 같이 보면서 진행해야 직관적으로이해하기가 수월하고 편하더라고요.) 만약 없다면 제공할 계획은 있으신지 궁금합니다. 수고하세요!
-
해결됨새싹부터 시작하는 Unity 게임 개발
Dictionary 관련 메소드 사용 질문 드립니다.
에러가 발생하는 경우 public Dictionary<string, int> c = new Dictionary<string, int>(); c.Add("A", 5); 에러가 발생하지 않는 경우 public Dictionary<string, int> c = new Dictionary<string, int>(); private void Start() { c.Add("A", 5); }왜 Start() 메서드 안에 있으면 에러가 발생하지 않고 dictionary 선언 후 바로 Add를 하면 에러가 발생하는지 궁금합니다.
-
해결됨C# WinForm 사용자 정의 컨트롤 활용. 실무 역량 키우기
21. PickList(디자이너 생성) 강좌 문의
21. PickList(디자이너 생성) 강좌에서 Rounded_panel 생성 후 flowLayoutPanel 생성하는 절차가 삭제된 것 같습니다.22번 강좌에서 기능연결하는 부분에 flowLayoutPanel 항목이 없다보니 따라가다가 살짝(?) 당황스럽기는 했네요..물론 추가하면 되지만.. 내용 확인 부탁드립니다.
-
해결됨새싹부터 시작하는 Unity 게임 개발
8:56초 b.Remove(3) 부분 설명에 대해 질문드립니다.
b.Remove(3); // b리스트의 세 번째 값을 제거안녕하세요! 위처럼 설명해주셨는데, 세 번째 값 제거는 세 번째 인덱스인덱스처럼 보여져값이 3인 것을 제거하는 것으로 설명해주시는 것이 좀 더 명확한 설명이지 않나 싶어서 글 남깁니다.직접 코드를 b.Remove(300);을 해보니 값이 300인 요소가 지워졌습니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
Firebase 웹에서 값 변경 후
웹에서 값을 변경 후 ReadData를 하면 변경된 값이 반영이 안되고 0으로 나오는데 왜그럴까요?코드 변경없이 가끔가다가는 반영된 값이 나옵니다..
-
미해결유니티 Addressable 을 이용한 패치 시스템 구현
카탈로그 다운로드 주소를 런타임에서 변경할 수 있을까요?
여러가지 이슈를 대비해 런타임중 서버로 부터 카탈로그 다운로드 주소를 받아와해당주소에서 카탈로그를 다운로드해서 업데이트하고 에셋을 로드하는 방식을 사용하려고해요 런타임중 리모트 카탈로그 주소를 변경하는 방법이 있다면알려주시면 감사하겠습니다
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
Material 파일이 깨지는거 같아요
쉐이더 ui default로 하면 정상적으로 보이는데 기본으로 하면 분홍색으로만 나옵니다
-
미해결C# 윈폼_ 응용프로그램 개발(.NetFramework)
이렇게 메서드명 띄워서 나오는 경우는 뭐죠?
그리고 한가지 더 궁금하자면 원래 checkedChanged에 checkBox1_checkedChanged라고 자동으로 선택할수 있는게 아니라 전 수동으로 글씨 입력했는데 원래 이래야 하나요? private void checkBox1_checkedChanged(object sender, EventArgs e){ //알림메시지를 띄울 때 사용합니다. MessageBox.Show("알림메시지");}
-
미해결C# 윈폼_ 응용프로그램 개발(.NetFramework)
16:10 여기까지 쭉 작성했을 때 에러 뜬다고 마지막으로 성공한 빌드를 실행하시겠습니까? 라고 뜨는데
물론 button1 눌렀을 때 글자3이라고 제대로 바뀌긴 합니다. using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace WindowsFormsApp1{ public partial class Form1 : Form { public Form1()// 이 화면이 나오기 전에 실행되는 함수를 추가하고 싶다 할 때는 Form1에서 빈 화면 쪽에 클릭을 해줍니다. { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //글자를 변경해보자. lbl1.Text = "글자입니다."; lbl2.Text = "글자2"; } //버튼을 클릭했을 때 동작하는 함수 private void button1_Click(object sender, EventArgs e) { lbl3.Text = "글자3"; } }}
-
미해결C# 윈폼_ 응용프로그램 개발(.NetFramework)
자료 다운로드 파일에 C# 파일들 있는거 같은데
그 파일들은 언제쓰나요?
-
미해결[유니티 실전 프로젝트] Burger Please 모작
10강 애니메이션 강의에서 enum EState부분 질문있습니다.
Define에서 enum EState를 정의하셨는데State앞에 E를 붙인 특별한 이유가 있나요?그리고 PlayerController에서 EState 변수 선언을 했는데 Define.Estate라고 안하고 바로 EState 라고 하셨는데 이게 어떻게 가능한건가요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
SendBuffer 클래스를 만드는 이유
매번 패킷을 보낼 때마다 byte 배열을 할당해서 그 참조를 Session의 Send 함수로 전달하면 굳이 SendBuffer로 값을 한번 더 복사하는 과정 없이도 동작할 것 같습니다.그런데도 SendBuffer라는 클래스를 만들어서 관리하는 이유는 잦은 배열 할당으로 인한 Memory Fragmentation를 최소화하기 위함인가요?
-
해결됨책 3권을 영상으로 만든 Unity 게임 개발
섹션5-11
유저데이터로드와 유저레지스터를 이렇게 수정했는데 상관없나요?수업에 나온 그대로 코드를 입력했는데 유닛 123도 같이 비활성화되서요ㅠㅠ일단은 123활성화 45비활성화는 되는데 코드가 너무 달라진 것 같아서 질문드립니다.using UnityEngine; using UnityEngine.UI; public class UserDataLoad : MonoBehaviour { [SerializeField] Text UserNickNameText; [SerializeField] Button[] CharBtns; int[] CharNum; void Start() { CharNum = new int[5]; // 유닛 데이터 불러오기 (Unit1~Unit3 기본값 1, Unit4~Unit5 기본값 0) for (int i = 0; i < 5; i++) { CharNum[i] = PlayerPrefs.GetInt("Unit" + (i + 1), (i < 3 ? 1 : 0)); // Unit1~Unit3 기본값 1, Unit4~Unit5 기본값 0 } // 버튼 활성화 상태 설정 UpdateButtonStates(); } void Update() { // 닉네임 업데이트 UserNickNameText.text = PlayerPrefs.GetString("UserNickName"); } void UpdateButtonStates() { for (int i = 0; i < 5; i++) { CharBtns[i].interactable = (CharNum[i] == 1); } } } using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public class UserRegister : MonoBehaviour { [SerializeField] InputField NickNameInput; string NickName; public void OnClickRegister() { NickName = NickNameInput.text; // 사용자 정보 저장 PlayerPrefs.SetString("UserNickName", NickName); PlayerPrefs.SetInt("Coin", 1000); PlayerPrefs.SetInt("Level", 1); PlayerPrefs.SetInt("WinCount", 0); // 유닛 활성화 상태 저장 PlayerPrefs.SetInt("Unit1", 1); PlayerPrefs.SetInt("Unit2", 1); PlayerPrefs.SetInt("Unit3", 1); PlayerPrefs.SetInt("Unit4", 0); PlayerPrefs.SetInt("Unit5", 0); PlayerPrefs.Save(); // 다음 씬으로 이동 SceneManager.LoadScene("User Scene"); } }
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
Resources폴더의 로드에 대하여 궁금한 것이 있습니다.
아직 초반 강의 부분을 보고 있지만 일부 리소들에 대해서 리소스 폴더에서 로드하는 내용들이 제법 있는 것 같은데 제가 알기로는 리소스 폴더에서 로드하는 방식의 경우 빌드 시 전부 포함이 되기 때문에 무거워져 비선호한다로 알고 있습니다.현업에서 정말로 이렇게 쓰이는지가 궁금합니다. 추가적인 질문으로는 요즘 결합도 관련해서 경험이 많이 부족했어서 이것저것 고민을 하고 있는 상황입니다. 챗지피티를 통해 인스턴스를 통한 다른 클래스에서의 사용이 결합도를 높이는 좋지 않은 것으로 챗지피티에서 알려주고 있는데 싱글톤을 통한 인스턴스들을 또 사용이 제법 나오는데 이또한 현업에서도 허용범위인가요??
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
M2는 업데이트가 끝난건가요?
안녕하세요! M2 업데이트 끝날 때 몰아서 듣고 싶어서 기다리고 있는데공지사항과 일정 변동?을 보면 업데이트가 끝났다는 뉘앙스로 말씀하셨지만본 강의 커리큘럼을 보면 아직 챕터 이름?이 살아 있어서 업데이트가 끝난건지 업데이트 예정인지 궁금합니다!
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
절전모드 카메라 끄는 것
절전모드에서 성능을 더 좋게 하기 위해 카메라를 끄면 Bathes, Tris, Verts 등이 줄어들어 성능이 좋아지는데 그것말고 다른 방법들은 어떤게 있나요?
-
미해결절대강좌! 유니티6 - 네트워크 게임 개발 마스터클래스 (Part 1)
피격 오류
더미는 피격이 되는데요. 상대탱크는 그냥 캐논이 뚫고 지나갑니다.
-
해결됨C# 프로그래밍 기초부터 실전 활용까지
블로그 글
강의에서 지속석으로 나오는 블로그 글은 다 내려갔나요??