초보자 VR 엔지니어가 코드를 읽을 수있는 방법
워킹 메모리를 단련하면 코드 모리모리 읽을 수 있는 설~! !
착상을 얻은 계기는 이 논문입니다! 간단한 기억력 테스트로는 VR공간 내의 쪽이 2D에서의 테스트에 비해 8.8% 높은 결과였다는 것입니다 👏 htps // t. 코 / y 치이 j49 0S 100 (@okprogramming) 10월 12, 2019
더 거슬러 올라가면 이 기사에서 N 백 과제에 대해 알았습니다.
제목은 팩이 아닌 존경의 증거입니다.
N 백 과제는?
얼마 전의 기억을 끌어내는 훈련을 함으로써,
워킹 메모리가 단련되어, 코드와의 쫓는 곳이 능숙해지는 것 같습니다.
놀이 방법
★준비
Oculus Quest에 Github에서 다운로드 한 apk를 찔러서 시작하고 끝입니다.
→ Github
먼저 빛나는 패널을 기억하고 기억하면서 선택하기만 하면 됩니다.
2백 정도부터 시작하면 룰을 알기 쉽다고 생각합니다.
올레올레 N 백 구현
여기서부터 주제입니다. 강한 여러분은 어떻게 구현할까요?
우선은 뇌 트레이닝으로 놀아보고, 자신이라면 어떻게 구현할 것이다,,,,
라는 관점에서 다시 놀면 두 번 맛있습니다.
슬라이더로 선택한 레벨 획득
우선 슬라이더로 선택한 레벨을 얻습니다.
아래 코드의 GetLevel()
로 취득한 회수분만 최초로 패널이 빛납니다.
using UnityEngine;
using UnityEngine.UI;
public class LevelGetFromSlider : MonoBehaviour
{
Slider levelSlider;
void Start()
{
levelSlider = this.gameObject.GetComponent<Slider>();
}
public int GetLevel()
{
return (int)levelSlider.value;
}
}
패널이 레벨의 횟수만큼 자동으로 무작위로 빛난다
다음 코드에서는 다음을 수행합니다.
①모든 패널을 취득, 리스트화.
② 작성한 리스트에서 랜덤하게 하나를 선택.
③ 선택된 오브젝트 측에 부착된 클래스에서 빛나는 소리가 울리는 등의 메소드를 호출한다.
④ 선택된 객체를 나열한다.
위를 GetLevel()
로 취득한 회수분만큼 반복합니다.
또한, 다음의 패널측에서 호출할 예정인 ToNextSelect()
도 여기에 써 둡니다.
[SerializeField, Header("選ばれる間隔を操作")]
float m_interval = 2;
List<GameObject> m_tmpListObj = new List<GameObject>();
[HideInInspector]
public List<GameObject> g_listObj = new List<GameObject>();
float m_randomValue;
void Start()
{
//子のオブジェクトを全部リストに入れとく
foreach(Transform child in this.gameObject.transform)
{
m_tmpListObj.Add(child.gameObject);
}
}
//Startボタン押したら呼ばれる
public void AutoSelectStart()
{
StartCoroutine(AutoSelectStartCoroutine());
}
//レベルに応じて自動で選ばれる回数を変える
IEnumerator AutoSelectStartCoroutine()
{
for(int i = 0; i < m_levelGetFromSlider.GetLevel(); i++)
{
yield return new WaitForSeconds(m_interval);
//ここでどれが選ばれるかランダムに決める
m_randomValue = Random.Range(0, m_tmpListObj.Count);
//選ばれたときのイベント呼び出し
m_tmpListObj[(int)m_randomValue].GetComponent<PanelSelectedEvent>().BlinkPanel();
m_tmpListObj[(int)m_randomValue].GetComponent<PanelSelectedEvent>().CorrectSoundPlay();
//選んだオブジェクトをリスト化する
g_listObj.Add(m_tmpListObj[(int)m_randomValue]);
}
}
//レーザーで選んだら次が光ってリストを更新
public void ToNextSelect()
{
//ここでどれが選ばれるかランダムに決める
m_randomValue = Random.Range(0, m_tmpListObj.Count);
//選ばれたときのイベント呼び出し
m_tmpListObj[(int)m_randomValue].GetComponent<PanelSelectedEvent>().BlinkPanel();
//選んだオブジェクトをリスト化する
g_listObj.Add(m_tmpListObj[(int)m_randomValue]);
}
게임 시작까지 처리가 완료되었습니다.
패널을 선택하여 정답 부정해 결정
여기에서는 실제로 패널을 선택한 후의 판정으로 이동합니다.
판정은 패널측에서 개별적으로 실시합니다.
가는 일은 매우 간단합니다.
① 조금 전의 리스트를, 준비한 인덱스로 지정해 호출해, 자신과 대조한다.
②합치하고 있으면 정해음과 다음의 패널이 선택되는 처리를 실행해, 준비한 인덱스를 인크리먼트.
잘못된 경우 증가하지 않고 실수 SE를 재생하면 됩니다.
또, 인크리먼트 한 인덱스의 수로부터 게임 클리어시의 판정도 실시하고 있습니다.
//このスクリプトはパネルにアタッチされたスクリプトです
//何回選ぶか エンドレスモードがあればここをめちゃくちゃでかい数字に変えればOK
int m_playTime = 10;
static int m_selectedCount;
//先程のリストを取ってくる
PanelSelected m_panelSelected;
void Start()
{
m_selectedCount = 0;
m_panelSelected = this.gameObject.GetComponentInParent<PanelSelected>();
}
//選んだものが同じかどうか判定して選択カウント増加
public void IncrementSelectedCount()
{
if (m_selectedCount < m_playTime)
{
if (m_panelSelected.g_listObj[m_selectedCount] == this.gameObject)
{
m_panelSelected.ToNextSelect();
CorrectSoundPlay();
m_selectedCount++;
}
else
{
WrongSoundPlay();
}
}
else
{
if (m_panelSelected.g_listObj[m_selectedCount] == this.gameObject)
{
CorrectSoundPlay();
m_selectedCount++;
if (m_selectedCount == m_playTime + m_levelGetFromSlider.GetLevel())
{
//ここにクリア時の処理
m_clear.ClearTextAppear();
}
}
else
{
WrongSoundPlay();
}
}
}
요약
만들고 이런 말을 하는 것도 됩니다만,
프로그램을 읽을 수 있게 되고 싶다면 프로그램을 읽으면 좋겠다고 생각합니다.
고마워요.
Reference
이 문제에 관하여(초보자 VR 엔지니어가 코드를 읽을 수있는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/OKsaiyowa/items/db98c4bb6dacec1979e2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)