Ssssong += Dev

[퍼즐게임] WHITE POLYGON - 10 본문

개발/WHITE POLYGON

[퍼즐게임] WHITE POLYGON - 10

ssong_dev 2022. 8. 8. 00:34

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