// 스테이지 생성 준비작업 public void LoadStage(StageTargetType stageTargetType_) { if (stage != null) { return; } SetStageTargetType(stageTargetType_); // 원점에 스테이지 객체 생성. 어차피 타겟 오브젝트를 원점으로 사용할 것이므로 타겟 하위에 생성하지는 않는다. // AR 타겟의 추적 상태가 먼저 바뀌고 스테이지가 생성되는 것 막기 위해 스테이지를 명시적으로 먼저 생성 GameObject obj = Instantiate( prefabStage , Vector3.zero , Quaternion.identity) as GameObject; stage = obj.GetComponent <Stage>(); stage.SetVisible(false); // 안보이는 상태로 생성 후, 마커 추적이 가능해지면 보임 // AR 타겟 생성 if (stageTargetEventHandler != null) { stageTargetEventHandler.BuildNewTarget(stageTargetType); } SetState(State.Stage); }
// 스테이지 상태 변경, 씬 오브젝트 정리 private void SetStageTargetType(StageTargetType stageTargetType_) { if (stageTargetType == stageTargetType_) { return; } stageTargetType = stageTargetType_; }
// 타입에 따른 템플릿 구하기 private ImageTargetBehaviour GetTargetTemplate(StageTargetType stageTargetType) { if (stageTargetType == StageTargetType.Normal) { return(targetTemplate_Normal_Extended); } else if (stageTargetType == StageTargetType.Large) { return(targetTemplate_Large_Extended); } else { return(null); } }
// 새 타겟을 생성한다. public void BuildNewTarget(StageTargetType stageTargetType) { if (trackable != null) { Debug.Log("Target already created"); return; } // 타겟 종류에 따른 템플릿 선택 ImageTargetBehaviour targetTemplate = GetTargetTemplate(stageTargetType); if (targetTemplate == null) { return; } // 타겟 생성 시도 lastTargetType = stageTargetType; string trackableName = targetTemplate.TrackableName; // Debug.Log("BuildNewTarget " + trackableName + " size:" + targetTemplate.GetSize()); mTargetBuildingBehaviour.BuildNewTarget(trackableName, targetTemplate.GetSize().x); }
// 타입에 따른 템플릿 구하기 private ImageTargetBehaviour GetTargetTemplate(StageTargetType stageTargetType) { if (stageTargetType == StageTargetType.Normal) { return targetTemplate_Normal_Extended; } else if (stageTargetType == StageTargetType.Large) { return targetTemplate_Large_Extended; } else { return null; } }