#region
은 C#에서 코드 블록을 접거나 펼칠 수 있는 구역을 지정하는 데 사용됩니다. 이를 통해 코드의 가독성을 높이고, 특정 영역을 쉽게 관리할 수 있습니다.
#region
: 특정 코드 영역의 시작을 표시합니다.#endregion
: #region
으로 시작된 코드 블록의 끝을 표시합니다.배열이나 리스트의 요소들을 무작위로 섞는 알고리즘.
각 요소가 동일한 확률로 배치되도록 보장한다.
O(n^2)는 리스트 따로 만들어놓는데
위의 방법은 O(n)으로 된다.
Quaternion 구조체의 기본값으로, 회전이 없는 상태(0도 회전)를 나타내는 단위 쿼터니언
플레이어가 플레이어나 NPC한테 잘못 공격하면 10초 간 기절?
밤이 되면 심장소리, 괴물이 다가오면 심장소리 커지게
밤 시작하면 모든 플레이어에게 괴물 변신 울음소리 들리게
맵에 떨어져 있는 각종 아이템
킬, 인터렉션 버튼 없애고 가운데 글자 넣는 걸로 대체하는게 낫지 않을까?
괴물에서 사람으로 돌아오려면 사람을 반드시 하나 잡아먹어야 하면 어떨까
시작 컷신 다 걷어내고 카메라 쭉 빠지는 연출만 남기기로
GameObject.FindGameObjectsWithTag("SpawnPoint").Select(x => x.transform.position).ToArray();
여기서 => 이거 뭐임
코드에서 =>는 람다 표현식(Lambda Expression)을 나타내는 구문입니다.
=>는 익명 함수를 정의하는 데 사용되며, Select 메서드와 같은 LINQ 구문에서 주로 활용됩니다. 이 구문은 각 요소를 특정 방식으로 변환하거나 필터링할 때 유용합니다.
public void LoadingEnd()
{
StartCoroutine(EndCoroutine());
}
IEnumerator EndCoroutine()
{
yield return new WaitForSeconds(1.5f);
loadingPanel.ModalWindowOut();
}이거 코드 설명 좀
이 코드는 LoadingEnd
메서드가 호출되면 1.5초 후에 loadingPanel.ModalWindowOut()
메서드를 실행하는 구조로 되어 있습니다. LoadingEnd
메서드에서 코루틴을 시작하고, 코루틴 내에서 1.5초 대기 후 지정된 메서드를 실행합니다.
public void LoadingEnd()
{
StartCoroutine(EndCoroutine());
}
LoadingEnd
메서드는 EndCoroutine
코루틴을 시작합니다.StartCoroutine
을 사용하여 코루틴을 실행합니다. 코루틴은 비동기적으로 실행되므로, 메서드 내에서 지정된 대기 시간을 기다릴 수 있습니다.IEnumerator EndCoroutine()
{
yield return new WaitForSeconds(1.5f);
loadingPanel.ModalWindowOut();
}
EndCoroutine
코루틴은 1.5초 동안 대기한 후 loadingPanel.ModalWindowOut()
메서드를 호출합니다.yield return new WaitForSeconds(1.5f);
는 1.5초 동안 대기하도록 지시하는 구문입니다. 이 지점에서 1.5초가 지나면 다음 줄로 진행됩니다.loadingPanel.ModalWindowOut()
은 loadingPanel
의 모달 창을 닫거나 숨기는 역할을 하는 메서드일 가능성이 있습니다.이 코드는 LoadingEnd
메서드가 호출된 후 1.5초 대기하고, 이후 loadingPanel.ModalWindowOut()
메서드를 실행하여 로딩 패널을 닫는 동작을 수행합니다.
-> ModalWindowOut은 애셋에 있던 코드였다.
using UnityEngine;
using UnityEngine.Playables;
public class TimelineEndTrigger : MonoBehaviour
{
public PlayableDirector playableDirector;
private void Start()
{
// 타임라인의 종료 이벤트에 함수 연결
playableDirector.stopped += OnTimelineStopped;
}
private void OnTimelineStopped(PlayableDirector director)
{
// 타임라인이 끝나면 실행될 코드
Debug.Log("타임라인이 종료되었습니다. 특정 코드를 실행합니다.");
// 여기에 원하는 코드를 작성하세요.
}
private void OnDestroy()
{
// 메모리 누수를 방지하기 위해 이벤트 구독 해제
playableDirector.stopped -= OnTimelineStopped;
}
}
gpt가 짜준 코드를 일단 붙여넣고 구글링으로 다른 레퍼런스 찾아봤는데
gpt도 애초에 유니티 매뉴얼에서 복붙해온거였다
IEnumerator WaitForIntro()
{
yield return new WaitUntil(() => PD.state != PlayState.Playing);
}
타임라인 끝나면 이어지도록 하기 위해 코루틴 써보려고 했는데
gpt가 성능 안 좋고 확장성 안 좋다고 쓰지 말라고 함
팀원한테도 물어봤더니
코루틴은 비동기 (동시에 같이 돌리는거) 를 위한 기능이기 때문에
이벤트로 하는게 맞을 것 같다고 함
현재는 각자 Actor number를 지정받고 그 인덱스를 기반으로 position 배열만 넘겨받아서 각자가 조종할 캐릭터를 instantiate 하는건데
모니터를 넘겨주려고 했더니 오브젝트는 각자가 달라서 식별이 안된다고 함. 하려면 photonview component를 달거나 unique한 게임 오브젝트 이름을 달면 된다고 함
NPC가 시작도 전에 화면에 나타날 수 있다고 하는 점을 말하고
로딩 코루틴과 연관돼있어서 어렵다고 말씀드리니 그냥 시작 컷신 빼자고 하심.
Color Tint
는 버튼이 눌리거나 선택될 때 색상이 변경되는 방식입니다. 그 외에도 Sprite Swap
(이미지를 바꾸는 방식), Animation
(애니메이션 전환)이 있습니다.Button_kill
이라는 이미지가 Target Graphic으로 설정되어 있습니다.Interactable
이 해제된 경우 이 색상이 적용되며, 일반적으로 회색 같은 흐릿한 색상으로 설정하여 비활성화 상태임을 나타냅니다.1
이며, 필요에 따라 조정할 수 있습니다.색깔은 disabled color의 alpha 값 0으로 만들고
interactButtonText = interactButton.GetComponentInChildren<TextMeshProUGUI>();
killButtonText.text = "Kill";
텍스트는 대충 이런거 조건문 군데군데 박아서 해결
짜잔