전체 분류
Unity : Child를 Destroy 후 ChildCount를 참조할 때 문제상황
Unity : Child를 Destroy 후 ChildCount를 참조할 때 문제상황
2019.11.28Destroy로 해당 오브젝트의 Child를 모두 삭제하고 싶을 때, for를 사용할 경우 보통 다음과 같은 코드를 짜게 될 것이다. for (int i = 0; i < transform.childCount; i++) { Destroy(transform.GetChild(i).gameObject); } 이후, ChildCount를 출력하면 어떻게 될까? for (int i = 0; i < transform.childCount; i++) { Destroy(transform.GetChild(i).gameObject); } print(transform.childCount); 그렇다. 0이 아니다. 처음에 이걸 알고 난 이후에 영문도 모른 채 자기자신을 공격했다. 왜 이런 일이 일어났을까? Destroy를 호출해..
~09/10 Log
~09/10 Log
2019.09.108월에 그린 리퀘들
ML-Agents 공부 (3) 190818
ML-Agents 공부 (3) 190818
2019.08.18본 카테고리는 "공부"입니다. 정보를 얻으실 때 사실과 다르거나 부정확한 정보가 들어있을 수도 있습니다. #은 공부하면서 스스로가 적는 코멘트입니다. 1) Academy 스크립트 작성 참 편리하게도 추상 클래스로 되어 있기 때문에, Academy를 상속받기만 하면 됨. 상속받으면 빈 프로젝트여도 Academy로 작동한다. #후에 라이브러리 공부하기 Inspector 창에서 Academy의 상세 정보 설정 가능. Time Scale : 배속. 15로 잡으면 15배속으로 학습이 이루어진다. Target Frame Rate : 목표로 하는 화면의 프레임. 2) Agent 스크립트 작성 Agent를 상속받으면 해당 스크립트는 에이전트로 판단됨. AgentReset Agent 초기화 함수. CollectObser..
ML-Agents 공부 (2) 190818
ML-Agents 공부 (2) 190818
2019.08.18본 카테고리는 "공부"입니다. 정보를 얻으실 때 사실과 다르거나 부정확한 정보가 들어있을 수도 있습니다. #은 공부하면서 스스로가 적는 코멘트입니다. - 외부 텐서플로우는 유니티와는 독립적으로 작동. - 유니티 내부에서 관측된 환경을 텐서플로우로 보내고, 텐서플로우는 어떤 작동을 시켜야 할 지 브레인으로 보냄. - 그 후 브레인에서 에이전트로 보냄. 에이전트(Agent) - 액터(Actor). 주변 정보를 관측할 수 있다. - 선택 및 행동을 실행하는 데, 이 때의 결과에 따라 보상과 처벌을 받음. (강화학습) 브레인(Brain) - 정책 결정자. 에이전트의 선택과 행동을 결정함. - 단, 브레인을 공유하는 에이전트가 서로 정보를 교환하는 것은 아니다. 정책과 경향이 같은 것 뿐. - 브레인은 종족/사상..
ML-Agents 공부 (1) 190818
ML-Agents 공부 (1) 190818
2019.08.18본 카테고리는 "공부"입니다. 정보를 얻으실 때 사실과 다르거나 부정확한 정보가 들어있을 수도 있습니다. 1) 환경 구축 - Python 3.6.8 +Anaconda - ML-Agents 0.6.0 - Unity 2017.4.31f1 구버전이지만, 강의 자료의 버전은 이와 같은 상태였기에 적용하였음. 2) 패키지 설치 - Anaconda prompt 실행 - conda create -n ml-agents python=3.6 명령어로 ml-agents 개발환경 생성 - conda activate ml-agents 명령어로 ml-agents 환경 로드 - pip 및 ml-agents에 필요한 라이브러리 설치 3) 유니티 내에서 ml-agents를 실행하기 위해, Linux 빌드 서포트를 추가해야 함
C# Closure : for문의 변수를 람다식에서 참조하면 슬퍼지는 이유
C# Closure : for문의 변수를 람다식에서 참조하면 슬퍼지는 이유
2019.07.291 발생한 문제 오늘 개인 프로젝트를 작업하다가 슬픈 일을 겪었다. delegate를 사용해 Change_Tab 함수를 버튼에 추가하려고 했는데, 의도대로 되지 않았다. 아래쪽과 같은 코드를 사용해 프로그램을 구현했더니 다음과 같은 결과가 발생했다. 의도한 대로라면 아래쪽과 같이 탭을 누를 때마다 해당 탭으로 이동해야 했지만, 위와 같이 아무리 눌러도 첫번째 탭을 보여 주고 있었던 것이다. 심지어 for문에는 아무런 문제가 없었다. i를 Print로 출력해 봐도 0, 1, 2, 3, 4를 반복할 뿐이었고, 고통받았다. 원인은 Closure에 대한 잘못된 이해였다. 그러므로 미래에 내가 고통받지 않기 위해 클로저에 대해 정리하고, 왜 위의 코드가 슬픈 결과를 낼 수밖에 없었는지 알아 보겠다. 2 클로저 클..
~07/14 Log
~07/14 Log
2019.07.14
~01/28 Log
~01/28 Log
2019.01.28
[TRPG] 던전월드 자동화 캐릭터 시트
[TRPG] 던전월드 자동화 캐릭터 시트
2018.04.17소개 티알피지 던전월드 룰의 자동화 시트입니다. 다운로드 링크https://drive.google.com/file/d/19jJQ8n_liktnNQvJYgUVSaAXS2bXrRv0/view?usp=sharing 사용법 1) 직업과 종족을 결정한 후 각각 결정 버튼을 눌러주세요. 2) 능력치를 알맞게 분배한 후 수정 버튼을 눌러주세요. 3) 능력치 옆에 있는 약화 체크박스를 사용하면 능력치에 -1을 할 수 있습니다. 4) 필요 경험치를 충족한 뒤 레벨을 올릴 수 있습니다. 레벨을 올리면 추가 가능한 액션이 따로 표시됩니다. 1레벨인 경우, 경험치를 8 이상 가지고 있어야만 레벨 올리기 버튼이 작동됩니다. 5) Roll 버튼을 누르면 능력치 탭 가장 오른쪽 아래에 주사위 굴림 결과가 표시됩니다. 6) 각 액션..
[스크립트 009] Window_Base 스크립트 - 메소드 살펴보기 (1)
[스크립트 009] Window_Base 스크립트 - 메소드 살펴보기 (1)
2018.01.24이전 시간까지는 타이틀 씬과 맵 씬 스크립트의 내용을 해부하고, 응용해 보았다.그러나 이번 시간부터는 씬 스크립트를 해부하지 않고, 윈도우 스크립트를 응용해보는 시간을 갖도록 하겠다.이유는, 더 이상 다른 씬 스크립트를 해부하더라도 윈도우 스크립트의 내용이 받쳐주지 않으면 내용을 알 수 없기 때문이다.또한 이번 글 부터는 형식을 조금 바꾸려고 한다. 스크립트 전문을 모두 보고 넘어가기보다, 중요한 메소드만 짚고 응용해보는 식이다. 윈도우 베이스는 어떤 것을 다루는 스크립트일까? 바로, 모든 윈도우의 근간이 되는 스크립트이다. 단순히 골드를 표시하는 골드 윈도우부터, 선택지를 고르도록 하는 커맨드 윈도우까지 모든 윈도우를 만들 수 있도록 하는 것이 바로 윈도우 베이스다.이 윈도우 베이스 스크립트를 마스터하..
[스크립트 008] 테스트 게임이 아닐 때에도 디버그 씬 부르기
[스크립트 008] 테스트 게임이 아닐 때에도 디버그 씬 부르기
2018.01.22전 시간 자료 : http://doublsb.tistory.com/62저번 시간에는 Input의 이해를 통해 메뉴 호출 키를 변경해 보았다. 이번 시간에는 테스트 게임이 아닐 때에도 디버그 씬을 부를 수 있게 만들어 보자. 테스트 게임일 경우, 디버그 씬을 부르는 키는 F9키이다. 이 메소드는 Scene_Map에 있다. 한 번 내용을 살펴보도록 하자. def update_call_debug SceneManager.call(Scene_Debug) if $TEST && Input.press?(:F9) end update_call_debug 메소드는 만약 테스트 게임이고, F9키를 눌렀을 경우 디버그 씬으로 이동시킨다.이 중 테스트 게임이 아닐 때에도 디버그 씬을 부를 수 있게 만드려면, 어느 부분을 수정해야..
[스크립트 007] 메뉴 호출 키 변경하기와 Input의 이해
[스크립트 007] 메뉴 호출 키 변경하기와 Input의 이해
2018.01.19전 시간 자료 : http://doublsb.tistory.com/59저번 시간에는 맵 씬(Scene_Map) 스크립트를 해부해 보았다. 이번 시간에는 맵 씬 스크립트의 응용으로, 메뉴 호출 키를 변경해 보자. 메뉴 호출은 보통 B키(키보드 X키)를 눌렀을 때 이루어진다.B키에 대응되는 키를 변경하는 건 게임 창에서 F1을 누르거나, properties에 들어가 수정하는 것만으로 가능하긴 하다. 그럼에도 불구하고 이번 시간에 굳이 메뉴 호출 키를 스크립트로 변경해보는 이유는 Input 기능에 대해 알아보기 위해서이다.우선 메뉴 호출을 관리하는 메소드를 보도록 하자. def update_call_menu if $game_system.menu_disabled || $game_map.interpreter.ru..