private void Start() { if (SaveData._data.tutorialEnd) { // load scene info SaveData.SceneInfo roomInfo = SaveData._data.getRoomInfo(SceneManager.GetActiveScene().name); if (!roomInfo.firstIn) { for (int i = 0; i < Items.Length; i++) { bool isExist = false; for (int j = 0; j < roomInfo.itemName.Length; j++) {// in scene set active if (Items[i].name == roomInfo.itemName[j]) { isExist = true; } } Items[i].SetActive(isExist); } //check flower status if (SaveData._data.flowerIsSmall) { GameObject obj = GameObject.Find("Flower"); if (obj != null) { obj.transform.GetChild(1).GetComponent <BoxCollider2D>().enabled = false; obj.GetComponentInParent <Animator>().SetTrigger("Small"); } } //check curtain status if (SaveData._data.curtainIsOpen) { GameObject obj = GameObject.Find("paint"); if (obj != null) { GameObject obj2 = GameObject.Find("curtain"); if (obj2 != null) { obj2.SetActive(false); } obj.GetComponent <InteractiveItem>().interactiveDistance = 4; } } //check purpleRoom if (SaveData._data.canEnterPurpleRoom) { //set animation GameObject pRoom = GameObject.Find("SpurpleRoom"); if (pRoom != null) { pRoom.GetComponent <InteractiveItem>().interactiveDistance = 4; pRoom.GetComponent <Animator>().SetTrigger("Open"); } } //check main door LockMainDoor(); } //load player info foreach (string _item in SaveData._data.player.itemName) { if (_item != "") { Player.AddHoldItem(_item); } } if (Player.HoldItems.Count > 0) { Player.OnItemChanged(); } //tutorial if (roomInfo.name == "SblueRoom" && roomInfo.firstTalk) { roomInfo.firstTalk = false; Camera.main.GetComponentInChildren <SpriteRenderer>().color += new Color(0, 0, 0, 1); StartCoroutine(fadeInOut(Camera.main.GetComponentInChildren <SpriteRenderer>(), -0.08f)); SetTalk("yellow", 1); Player.Playerstate = Player.PlayerState.talk; Setactive(TalkUI, true); Player.setAnimation(Player.PlayerState.bed); } if (roomInfo.firstIn) //is first in { roomInfo.firstIn = false; } SaveData._data.setRoomInfo(roomInfo.name, roomInfo);//save room } }
private void Awake() { if (game == null) { game = this; } #if UNITY_EDITOR if (SceneManager.GetActiveScene().name == "Sopen") { CSV.GetInstance().loadFile(Application.dataPath + "/Resources", "opentest1221"); //loadCSV } else if (SceneManager.GetActiveScene().name == "SmainFake") { CSV.GetInstance().loadFile(Application.dataPath + "/Resources", "fakeopentest1223"); } else if (SceneManager.GetActiveScene().name == "Sbird" || SceneManager.GetActiveScene().name == "Schuchu" || SceneManager.GetActiveScene().name == "Sroad") { CSV.GetInstance().loadFile(Application.dataPath + "/Resources", "artest0524"); } else { CSV.GetInstance().loadFile(Application.dataPath + "/Resources", "test1223"); //loadCSV } #else if (SceneManager.GetActiveScene().name == "Sopen") { CSV.GetInstance().loadFile(Application.dataPath + "/StreamingAssets", "opentest1221"); //loadCSV } else if (SceneManager.GetActiveScene().name == "SmainFake") { CSV.GetInstance().loadFile(Application.dataPath + "/StreamingAssets", "fakeopentest1223"); } else if (SceneManager.GetActiveScene().name == "Sbird" || SceneManager.GetActiveScene().name == "Schuchu" || SceneManager.GetActiveScene().name == "Sroad") { CSV.GetInstance().loadFile(Application.dataPath + "/StreamingAssets", "artest0524"); } else { CSV.GetInstance().loadFile(Application.dataPath + "/StreamingAssets", "test1223"); //loadCSV } #endif if (SceneManager.GetActiveScene().name == "SblueRoom") { SaveData._data.tutorialEnd = true; } else if (SceneManager.GetActiveScene().name == "Sout") { SaveData._data.tutorialEnd = false; } //load player position if (SaveData._data.tutorialEnd) { SaveData.SceneInfo roomInfo = SaveData._data.getRoomInfo(SceneManager.GetActiveScene().name); if ((roomInfo.name != "SblueRoom" || !roomInfo.firstTalk)) { Debug.Log(SaveData._data.nowScene); Player.transform.position = GameObject.Find(SaveData._data.nowScene).transform.position; SaveData._data.playerPos = Player.transform.position; } SaveData._data.nowScene = roomInfo.name;//first set scene name } Items = GameObject.FindGameObjectsWithTag("item"); if (SceneManager.GetActiveScene().name != "Stitle" && SceneManager.GetActiveScene().name != "ARcamera" && SceneManager.GetActiveScene().name != "Sanimation") { _talky = _TalkUI.GetComponent <Talk>(); } }
private void OnMouseDown() { if (_canInteractive) { if (!SaveData._data.playerHasBook && itemName != "book") { SetTalk(); } else { // if (OnItemClicked != null) { OnItemClicked(this, EventArgs.Empty);//分發事件 } if (itemName == "2to3" || itemName == "3to2" || itemName == "2to1" || itemName == "1to2") { //矯正誤差,讓玩家移動到定點再開始播動畫 Vector3 pointPos = transform.GetChild(0).position; pointPos.y = player.transform.position.y; pointPos.z = 1; StartCoroutine(gotoPoint(Player.PlayerState.offset, pointPos, itemName, walkSpeed)); } if (itemName == "Smain" || itemName == "Sbalcony" || itemName == "SredRoom" || itemName == "SblueRoom" || itemName == "SpurpleRoom") { if (itemName == "SpurpleRoom") { //check diary and set ending SaveData._data.ending = 7; bool[] _hasdiary = SaveData._data.getDiaryInfo(); for (int i = 0; i < _hasdiary.Length; i++) { if (!_hasdiary[i]) { SaveData._data.ending = 6;//無止境的實驗 break; } } } //TODO: go to door animation //save player hold item SaveData._data.player.itemName.Clear();//清空 foreach (string _item in GameManager.game.Player.HoldItems) { SaveData._data.player.itemName.Add(_item); } //save scene item SaveData.SceneInfo roomInfo = SaveData._data.getRoomInfo(SaveData._data.nowScene); roomInfo.itemName = new String[GameObject.FindGameObjectsWithTag("item").Length]; for (int i = 0; i < GameObject.FindGameObjectsWithTag("item").Length; i++) { roomInfo.itemName[i] = GameObject.FindGameObjectsWithTag("item")[i].name; } SaveData._data.setRoomInfo(SaveData._data.nowScene, roomInfo); GameManager.game.changeSceneWithFade(itemName); } if (itemName == "SstorageRoom") { //TODO: go to door ani FindObjectOfType <Storage>().goIn(true); } else if (itemName == "StorageInDoor") { GameManager.game.Player.SetPlayerState(2); GetComponent <Storage>().goOut(false); } if (itemName == "Sout") {//結局 GameManager.game.OutUI.SetActive(true); player.Playerstate = Player.PlayerState.read; } if (itemName == "mouse") {//特例 GetComponent <SpriteRenderer>().enabled = true; Destroy(GameObject.Find("cheese_02_target")); } if (itemName == "lizard") { GameManager.game.LizardUI.SetActive(true); SoundManager.sound.playOne(SoundManager.sound.uise.click[0]); } if (itemName == "password") { GameManager.game.ComputerUI.SetActive(true); SoundManager.sound.playOne(SoundManager.sound.uise.click[0]); player.Playerstate = Player.PlayerState.read; } if (canPick) { GameManager.game.Player.Playerstate = Player.PlayerState.pick; SoundManager.sound.playOne(SoundManager.sound.playerse.pick); Vector3 pointPos = Camera.main.transform.position; pointPos.z = 0.0f; StartCoroutine(itemGotoPoint(pointPos)); } if (canTalk) { SetTalk(); } } } }