PROJECT(17)
-
[Unity][개발#5] 블록코딩, 함수 만들기
3번째 기능 함수 만들기 실제로 함수를 만들때 사용자가 원하는 변수와 같은 것들을 지정해서 쓸 수 가 있다. 그래서 '함수 만들기' 쌓아논 블록을 저장하여 다른 새로운 블록(함수)에 기능을 이관하여 쓸 수 있도록 구현할 것이다. Block3 : '함수 만들기'를 모두 담당하고 있는 오브젝트 중앙에 '함수만들기' 에 쓰일 블록들과 오른쪽중앙에 블록을 쌓을 빨간색 Panel이 보인다. public void MakeFunction() //함수 만들기 { Fpanel.SetActive(true); //Fx.SetActive(true); CanvasGroup canvasGroup = Fx.GetComponent(); canvasGroup.alpha = 1; canvasGroup.blocksRaycasts = tr..
2021.05.14 -
[Unity][개발#4]블록코딩, Canvas Group, 캔버스그룹 온오프, 코루틴문제
public void OnButtonClick() { gameObjectOpen.SetActive(true); gameObjectClose.SetActive(false); } 지금까지 항상 둘 이상의 캔버스를 사용할때는 버튼을 누를때 하나는 true를 반환하고 하나는 false를 반환했다. 그런데 비활성화된 캔버스의 하위 오브젝트를 찾을때 여러 어려움도 존재하고 코루틴을 사용하다보면 비활성화된 오브젝트의 코루틴을 실행되지 않는다는 오류를 보았다. 이를 해결하기 위해 캔버스가 비활성화 되지는 않지만 눈에 비활성화처럼 눈에 보이지 않고, 클릭이 불가능하게 설정하는 방법을 Canvas Group을 통해 해결하였다. public void OnButtonClick() { OpenCanvasGroup = gameO..
2021.05.12 -
[Unity][개발#3]반복문, for문, 블록코딩
저번 글에서 단일동작에 대한 블록코딩까지 완료되었다. 구현할 반복문은 for문이다. 아이디어는 for문에서 돌아갈 동작을 임시로 담아둘 커다란 박스를 하나 만들고 박스를 실행 시키는 방식이다. 고민인 점은 현 프로젝트는 VR을 고려하고 있기 때문에 웬만한 인터랙션은 버튼과 드래그로 하려고 한다. 그래서 텍스트를 받지 않을것이기 때문에 몇번 반복할지, 혹은 그 반복을 어떻게 정의해 줄지는 추가적인 논의가 필요하다 IEnumerator ForBox() // For()에서 돌아갈 블록들을 여기에 한번 저장을 한다. { int nSize = transform.childCount; for (int i = 0; i < nSize; i++) { GameObject Child = transform.GetChild(i)..
2021.04.29 -
[Unity][개발#2]단일동작 블록, 블록코딩,이동,회전
이전 작업물 단일행동을 가지고 있는 블록을 오른쪽 블록(Panel Main Loop)에 넣기 성공 단일 동작에는 Z축으로 1이동(블록에는 X로 되어있네요), 좌우 90도 회전, 180도 회전으로 규명했습니다. 구조설명 : Z축으로 1이동 스크립트명 : FunctionMove.cs 회전 스크립트명 : FunctionRotate.cs Panel Main Loop 에 블록이 들어왔음을 인식하는 스크립트명 : player_holder.cs player_hloder.cs public IEnumerator Go() //스타트버튼을 눌렀을때 실행되는 코루틴함수 { yield return new WaitForSeconds(1f); //1초 딜레이 Blocks = GameObject.FindGameObjectWithTa..
2021.04.29 -
[Unity][개발#1]Drag & Drop, 블록코딩, 드래그, 드랍
Unity 블록코딩 구현을 위한 Drag & Drop 이다 영역은 3가지로 왼쪽부터 미니맵, 블록, 블록이 쌓이는 공간으로 나뉜다. 대략적인 구상이며 가운데공간의 버튼 4가지는 각각 단일동작 블록, 반복문, 함수생성, 함수저장으로 사용될 예정이다. 오른쪽에 블록들이 차곡차곡 쌓이기 위해 Content Size Fitter와 Vertical Layout Group을 넣어주었다. Drag and Drop을 하기 위해서는 필요한 인터페이스가 존재한다. IDragHandler = 드래그하는 동안, IEndDragHandler = 드래그 끝났을 때, IPointerDownHandler = 클릭할때 public void OnDrag(PointerEventData eventData) { // 마우스 좌표 인식해서 블..
2021.04.29