<데이터 로드, 월드 구성, by포토샵>미완성
Unity/과제 2019. 4. 18. 00:341 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 31 32 33 | using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; namespace SG.scenes { public class App : MonoBehaviour { public Camera uiCamera; private void Awake() { //로드된 직후 호출 Object.DontDestroyOnLoad(this); } // Start is called before the first frame update void Start() { //객체 생성시 호출 var oper = SceneManager.LoadSceneAsync("Logo"); oper.completed += (AsyncOper) => { Debug.Log("로고 씬 로드 완료"); var logo = GameObject.FindObjectOfType<Logo>(); logo.Init(this.uiCamera); }; } } } | cs |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; namespace SG.scenes { public class Logo : MonoBehaviour { public UILogo uiLogo; public System.Action OnWaitForSeconds; public void Init(Camera uiCamera) { this.uiLogo.OnFadeInComplete = () =>//3완료 { Debug.Log("페이드 인 완료"); //타이틀 씬으로 전환 var oper = SceneManager.LoadSceneAsync("Title"); oper.completed += (AsyncOper) => { Debug.Log("로고 씬 로드 완료"); var title = GameObject.FindObjectOfType<Title>(); title.Init(uiCamera); }; }; this.uiLogo.OnFadeOutComplete = () =>//1완료 { Debug.Log("페이드 아웃 완료"); //3초기달 this.OnWaitForSeconds = () =>//2완료 { StartCoroutine(this.uiLogo.FadeIn());//3 }; StartCoroutine(this.WaitForSeconds(2));//2 }; this.uiLogo.Init(uiCamera); StartCoroutine(this.uiLogo.FadeOut());//1 } private IEnumerator WaitForSeconds(float sec) { yield return new WaitForSeconds(sec); OnWaitForSeconds(); } } } | cs |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 | using System.Collections; using System.Collections.Generic; using UnityEngine; using Newtonsoft.Json; public class AssetManager { public enum eDataType { None = -1, CharacterData, MonsterGroupData, StageData } private static AssetManager Instance; public Dictionary<string, GameObject> dicAssetData; private AssetManager() { this.dicAssetData = new Dictionary<string, GameObject>(); } public static AssetManager GetInstance() { if (AssetManager.Instance == null) { AssetManager.Instance = new AssetManager(); } return AssetManager.Instance; } public void LoadDatas<T>(string path) { var asset = Resources.Load<TextAsset>(path); var arrDatas = JsonConvert.DeserializeObject<T[]>(asset.text); foreach(var data in arrDatas) { //데이터 넣기 } } } | cs |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | using System.Collections; using System.Collections.Generic; using UnityEngine; using Newtonsoft.Json; public class DataManager { public enum eDataType { None = -1, CharacterData, MonsterGroupData, StageData } private static DataManager Instance; public Dictionary<int, CharacterData> dicCharacterData = new Dictionary<int, CharacterData>(); public Dictionary<int, MonsterGroupData> dicMonsterGroupData = new Dictionary<int, MonsterGroupData>(); public Dictionary<int, StageData> dicStageData = new Dictionary<int, StageData>(); private DataManager() { } public static DataManager GetInstance() { if (DataManager.Instance == null) { DataManager.Instance = new DataManager(); } return DataManager.Instance; } public void LoadDatas<T>(string path, eDataType dataType) { var asset = Resources.Load<TextAsset>(path); var arrDatas = JsonConvert.DeserializeObject<T[]>(asset.text); foreach(var data in arrDatas) { //데이터 넣기 } } } | cs |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; namespace SG.scenes { public class Title : MonoBehaviour { public UITitle uiTitle; public Camera uiCamera; public bool isRead; private void Awake() { this.uiTitle.btn.onClick.AddListener(() => { if (!isRead) { Debug.Log("아직 실행이 준비되지 않았습니다."); } else { //인게임 실행 var oper = SceneManager.LoadSceneAsync("InGame"); oper.completed += (AsyncOper) => { Debug.Log("인게임씬 로드 완료"); var inGame = GameObject.FindObjectOfType<InGame>(); inGame.Init(this.uiCamera); }; } }); } public void Init(Camera uiCamera) { this.uiCamera = uiCamera; this.uiTitle.Init(uiCamera); this.uiTitle.OnFadeOutComplete = () => { Debug.Log("똬이럴실행"); isRead = true; }; StartCoroutine(this.uiTitle.FadeOut()); } } } | cs |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace SG.scenes { public class InGame : MonoBehaviour { public Canvas canvas; public Image dim; public GameObject heroGo; public GameObject monsterGo; public System.Action OnFadeOutComplete; public System.Action OnFadeInComplete; private void Awake() { DataManager.GetInstance().LoadDatas<Character>("Data/character_data", 0); DataManager.GetInstance().LoadDatas<MonsterGroupData>("Data/monster_group_data", 0); DataManager.GetInstance().LoadDatas<StageData>("Data/stage_data", 0); } public void Init(Camera uiCamera) { this.canvas.worldCamera = uiCamera; Debug.Log("와 게임 시작이다!"); var hero = this.heroGo.GetComponent<Character>(); var monster = this.monsterGo.GetComponent<Character>(); //System.Action OnFadeOutComplete = () => // { // System.Action OnFadeInComplete = () => // { // }; // this.FadeIn(); // }; //this.Fadeout(); } private void PreLoad() { var arrObject= Resources.LoadAll("PreFabs"); foreach(var obj in arrObject) { //데이터 넣기 } } public void Fadeout() { StartCoroutine(FadeOutImpl()); } public IEnumerator FadeOutImpl() { var color = this.dim.color; float alpha = color.a; while (true) { alpha -= 0.016f; color.a = alpha; this.dim.color = color; if (alpha <= 0) { alpha = 0; break; } yield return null; } this.OnFadeOutComplete(); } public void FadeIn() { StartCoroutine(FadeInImpl()); } public IEnumerator FadeInImpl() { var color = this.dim.color; float alpha = color.a; while (true) { alpha += 0.016f; color.a = alpha; this.dim.color = color; if (alpha >= 1) { alpha = 1; break; } yield return null; } this.OnFadeInComplete(); } } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 | using System.Collections; using System.Collections.Generic; using UnityEngine; public class StageData { public int id; public string name; public string prefab_name; public int monster_group_id; } | cs |
1 2 3 4 5 6 7 8 9 10 11 | using System.Collections; using System.Collections.Generic; using UnityEngine; public class MonsterGroupData { public int id; public int group_id; public int monster_id; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | using System.Collections; using System.Collections.Generic; using UnityEngine; namespace SG.scenes { public class CharacterData { public int id; public string name; public string prefab_name; public string thumb_name; public string thumb_hex_color; public string idle_anim_name; public string run_anim_name; public string attack_anim_name; public string hit_anim_name; public string death_anim_name; } } | cs |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TestAttackAnim : MonoBehaviour { public GameObject bullGo; public Button btn1; public Button btn2; public Button btn3; private Animator anim; // Start is called before the first frame update private void Awake() { this.anim = this.bullGo.GetComponent<Animator>(); this.btn1.onClick.AddListener(() => { this.anim.SetBool("idle", true); }); this.btn2.onClick.AddListener(() => { this.anim.SetBool("run", true); }); this.btn3.onClick.AddListener(() => { this.anim.SetBool("attack_01", true); StartCoroutine(this.WaitforAttacComplete(() => { Debug.Log("타격!"); }, () => { Debug.Log("공격끝"); })); }); } private IEnumerator WaitforAttacComplete(System.Action onAttack, System.Action onAttackComplete) { yield return new WaitForSeconds(0.75f); onAttack(); yield return new WaitForSeconds(0.25f); onAttackComplete(); } } | cs |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class UITitle : MonoBehaviour { public Canvas canvas; public Image dim; public System.Action OnFadeOutComplete; public System.Action OnFadeInComplete; public Button btn; public void Init(Camera uiCamera) { this.canvas.worldCamera = uiCamera; } public IEnumerator FadeOut() { var color = this.dim.color; float alpha = color.a; while (true) { alpha -= 0.016f; color.a = alpha; this.dim.color = color; if (alpha <= 0) { alpha = 0; break; } yield return null; } this.OnFadeOutComplete(); } public IEnumerator FadeIn() { var color = this.dim.color; float alpha = color.a; while (true) { alpha += 0.016f; color.a = alpha; this.dim.color = color; if (alpha >= 1) { alpha = 1; break; } yield return null; } this.OnFadeInComplete(); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | using System.Collections; using System.Collections.Generic; using UnityEngine; public class Character : MonoBehaviour { private Animation anim; private void Awake() { this.anim = this.gameObject.GetComponent<Animation>(); } public void Init(Vector3 initPosition) { this.gameObject.transform.position = initPosition; } } | cs |
'Unity > 과제' 카테고리의 다른 글
<설계구조를 다시 짜보았다.> (0) | 2019.04.21 |
---|---|
<캐릭터 생성 월드로>한단계 진화함 (0) | 2019.04.19 |