트랙 도구의 2/3(기능적 실현 방법)

이런 분들께 추천해드릴게요.


유닛 제작에 관심이 있으신 분.
EDITORWindow를 사용하여 사운드 게임을 확장할 수 있는 도구
나는 스스로 소리 게임의 도구를 만들고 싶지만 어떻게 해야 좋을지 모르겠다.

개발 환경


Unity2017.4.8.1f
VisualStudio2017Community

메뉴(이번 내용)


・배치 가능한 스크롤 제작.(과거 기사가 있다)
· BPM과 LPB 등의 선을 굴러가는 방향으로 당길 때 빼지 않는 방법
· 마우스 이벤트의 노즈 설정
• 구성의 노즈 변경 시 위치 조정
(소리를 내며) 아직 완성이 안 돼서 이번엔 없어요.

정렬 가능한 스크롤 막대를 생성합니다.(과거 기사가 있다)


이 내용에 관해서는 이미 쓴 보도와 같다.
스크롤에 데이터를 추가할 수 있는 스크롤 바를 만듭니다.미니시리즈 Unity Editor 확장
https://qiita.com/herieru/items/f527ccea790226fda0b6
두루뭉술하게 말하다
자동 스크롤 시
이것은 스크롤 내용의 크기에 달려 있다
텍스트가 없는 탭을 넣고 너비만 설정하십시오.
다만, 이 너비는 도처에 이 너비의 정보가 필요하다
디자인을 할 때는 그것을 마음에 두는 것이 좋다.

스크롤에 BPM 및 LPB 등의 선을 그릴 때 그리지 않는 방법


스크롤 위에'not'를 올려야 돼요.
사운드 게임에서 필요한 것은 BPM과 LPB이다
두 가지 모두 매우 중요한 요소다.
※ BPM...속도 때문에 분당 횟수
※ LPB...BPM 간 간격
이것은 이것을 기준으로 표시한 선이다
스크롤 막대에 선을 배치하려면 스크롤 막대에 선을 그려야 합니다.
아래의 느낌.
선을 그은 견본.cs
Handles.DrawLine(開始位置、終了位置);
하지만 이 상태라면 흰색 선만 그릴 테니 색깔이 붙을 거예요.
아래 샘플
선을 그릴 샘플 2.cs

Color _base_color = Handles.color;
Handles.color = _color;
Handles.DrawLine(開始位置、終了位置);
Handles.color = _base_color;

1부에서.
Color _base_color = Handles.color;이 핸들즈반에 공통적으로 사용하는 방법이 있어요.
색깔이 바뀌면 앞으로의 핸들 색깔이 전부 저것으로 변하기 때문에 방지해야 한다.
여기서 문제는 시작 위치의 넓이.
간단하게 말하자면 스크롤의 가로 너비에서 각 BPM과 LPB의 수치를 사용하여 계산할 수 있다.

실타래


이번 상황은 구르는 중입니다.
간단하게 말하면, 스크롤 영역을 유지하고 그것을 사용하면, 선을 그릴 수 있다
문제를 바깥쪽으로 당기면 진일보한 문제가 있을 것이다.
핸들즈는 이번처럼 (0,0)부터 적정 수치인 핸들즈를 시작한다.DrawLine을 불러올 때
표시 세그먼트의 시작 지점은 Window의 0, 0곳입니다.
TODO: 사진
그래서 롤러에 덮고 싶어요.
화면을 굴리는 위치를 얻는 방법.cs

Rect _rect = EditorGUILayout.BeginHorizontal();
{
      //TODO:もろもろの処理・・・・
}
EditorGUILayout.EndHorizontal();

필요했어
그리고 더 주의해야 할 것은 이 Rect의 값은
Endhorizontal이 끝날 때까지 정확한 수치를 입력하지 못하거나 데이터 카드로 확인하지 못하는 경우도 있습니다.

마우스 이벤트에서 noz 설정


일반적인 EventSystem 기능
일반적인 마우스 입력법.cs

if(Input.GetMouseButton(ほにゃらら))
{
 //このボタンが押されたときの処理
}


그러나 안타깝게도, 이렇게 하면 자신이 만든 창에서 마우스 이벤트를 얻을 수 없습니다.
이유는 간단하다. EventSystem은 스스로 UIBehaviour를 계승했고, UIBehaviour는 MonoBehavior를 계승했기 때문에 Unity의 Update 순환에 들어가지 않으면 거의 움직이지 않는다(그렇지?)
따라서 Editor 확장에서는 다른 시점에서 마우스 이벤트를 가져와야 합니다.
if(Event.current.type != EventType.MouseDown)
{
}
int _mouse_button = Event.current.button;

이 방법으로 얻을 수 있다.
current 부분에 이벤트로 존재하는 데이터
이 내용은 춤추는 얇은 사건에만 국한된 것이 아니라 키보드 키를 눌렀을 때
보존하다.
그래서 미리 그게 마우스 움직임인가요?이런 정보의 확인은 필요하다.
또한 이번 마우스를 사용할 때 스크롤 내용을 제한해야 한다.
어떻게 하면 좋을까요?
스크롤 화면 위치 획득 방법
나는 이 문제의 샘플이 있어야 한다고 생각한다. 만약 마우스 위치 이외의 범위가 Rect라면 기본적으로 튀어나올 수 있다

배치된 노즈의 표시 위치를 계산합니다


바지를 구성할 때 주의해야 할 것은 다음과 같은 두 가지다.
1. 노즈 범위의 제한
2. 스크롤 위치 정보 얻기
1에 관해서는 이전 항목의 마우스지만 마우스로 얻은 위치는 화면 안의 위치 정보일 수밖에 없다.
이 때문에
마우스를 지우고 > 노즈를 그곳에 두면 정보를 스크롤 밖으로 가져옵니다
실질이 표시되지 않는 상태가 되다.
1. 노즈의 범위를 제한하기 위해
나는 몇 가지 패턴이 있을 것이라고 생각하지만, 스크롤 바 안의 위치 정보를 가공하는 방법으로 진행할 것이다.
기본적으로 마우스 클릭 위치 = 화면상의 위치 정보
따라서 스크롤 막대 안의 위치 정보 위에 놓을 때
스크롤 대상의 위치에서 시작하는 위치 정보
실제 배치된 위치는 스크롤 위치에서 벗어난 위치에 배치됩니다.
따라서 스크롤의 가시 범위 내에서 설정하려면 다음과 같은 정보의 제작 방법이 된다.

var _mouse_pos = Event.current.mousePosition- スクロールでの位置情報;

.
또한 스크롤된 위치 정보는 첫 번째 글을 참고하십시오.
그러나 이 상태에서 스크롤을 하든 이 위치 정보는 스크롤의 시작인 위치 정보이다
마우스의 위치를 현재 표시된 스크롤 영역과 일치시켜야 합니다.
그림에서 보듯이 아래와 같다.

따라서 스크롤에 사용되는 스크롤 위치 Vector2를 추가합니다.
이렇게 하면 항상 표시 섹션의 왼쪽 위 구석에 위치하고 위치가 정확해집니다.

소리 안 틀려고 틀라고?


이것에 관해서는 어쨌든 게임Object의 존재가 필요하지만 재생성할 수 있다.
데이터를 재생성하는 AudioClip
재생 장치로서의 AudioSource
AudioSource의 GameObject를 설치해야 합니다.
그래서 할 건요.
오디오 클립에 음악 데이터의 참고가 있습니다.
Audio Source를 AddComponent로 디자인한 GameObject(화면을 닫고 사라지도록 디자인해야 함)
.
겸사겸사 말씀드리지만, 이 방법 이외에 또 다른 명칭이 있다고 생각합니다. 저는 모르겠습니다. 만약 알고 있다면 저에게 알려 주십시오.

좋은 웹페이지 즐겨찾기