Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 인터페이스
- 게임개발
- 병맛게임
- C#
- ExtensionMethod
- 리듬게임
- 레이캐스트
- 1인개발
- callbyreference
- 깃허브
- raycast
- callbyvalue
- 짐벌락
- Euler
- 로케트
- Unity
- AR Foundation
- AR게임
- 델리게이트
- Quaternion
- AR세팅
- 리듬게임에디터
- github
- 소규모프로젝트
- ar
- 게임제작
- 확장메서드
- 유니티
- ARProgect
- 게임
Archives
- Today
- Total
Ssssong += Dev
[퍼즐게임] WHITE POLYGON - 10 본문
Stage Change 클래스를 좀 더 편하게 손보았다. 초반에 작성했던 스크립트라 퀘스트 시스템에서 다소 따로 놀았는데
기능 자체는 따로 [System.Serializable]로 묶어두고 상속을 다르게 받아 사용하도록 해 보았다.
그래도 똑같은 스크립트 사용하는 건 마찬가지인 것 같긴 한데...
[System.Serializable]
public class CStageChange
{
[SerializeField]
private bool transformEffectShow;
[SerializeField]
public TransformChange transformChange;
[SerializeField]
public GameObject toBigCube;
[SerializeField]
private string changeTargetScene;
public void SceneChangeEffect()
{
if(transformEffectShow)
{
toBigCube.SetActive(true);
transformChange.MoveStart();
transformChange.endTransformEvent += BlackInOut.Instance.ReadyToChangeScene;
}
else
{
BlackInOut.Instance.ReadyToChangeScene();
}
BlackInOut.Instance.ChangeTargetScene = changeTargetScene;
BlackInOut.Instance.FadeOut();
if (changeTargetScene == "Octahedron")
{
CStageManager stageManager = CStageManager.Instance;
stageManager.octahedron = true;
}
}
}
public class CStageClickEvent : QClickEvent
{
[Header("StageChangeOption")]
[SerializeField]
private CStageChange stageChange;
public override void Start()
{
StartQuestAdd += stageChange.SceneChangeEffect;
}
}
public class CStageTriggerEvent : QTriggerEvent
{
[Header("StageChangeOption")]
[SerializeField]
private CStageChange stageChange;
public override void Start()
{
StartQuestAdd += stageChange.SceneChangeEffect;
}
}
씬 전환 시 이전 씬에 있던 카메라 위치가 저장되도록 하였다.
각 퀘스트 클리어 여부는 SetActiveState를 오버라이드 해서 사용하고 있다.
public void SetQuestComponentInfo(CQuestComponent a_Quest)
{
string addKey = sceneName + "_" + a_Quest.gameObject.name + "_" + a_Quest.GetType().ToString();
if (questComponentInfos.ContainsKey(addKey))
{
bool tempStart;
bool tempClear;
tempStart = questComponentInfos[addKey].questStart;
tempClear = questComponentInfos[addKey].questClear;
a_Quest.QuestStart = tempStart;
a_Quest.QuestClear = tempClear;
}
else
{
AddEvent(a_Quest);
}
AddQuestState(a_Quest);
}
public void AddQuestState(CQuestComponent a_Quest)
{
a_Quest.SetActiveState();
}
'개발 > WHITE POLYGON' 카테고리의 다른 글
[퍼즐게임] WHITE POLYGON - 12 (0) | 2022.08.11 |
---|---|
[퍼즐게임] WHITE POLYGON - 11 (0) | 2022.08.08 |
[퍼즐게임] WHITE POLYGON - 9 (0) | 2022.08.01 |
[퍼즐게임] WHITE POLYGON - 8 (0) | 2022.07.28 |
[퍼즐게임] WHITE POLYGON - 7 (0) | 2022.07.28 |