분류 전체보기 148

#5. Clock

Tip. 기능별로 자바스크립트 파일을 분리해서 만들어주면 편하다 Interval setInterval(함수명, 밀리초); // ex. setInterval(sayHello, 5000); ms 기준(1000ms = 1초)으로 지정한 밀리초마다 반복해서 해당 함수를 실행시키는 함수 Timeout setTimeout(함수명, 밀리초); 해당 함수가 실행되고 지정한 밀리초가 지난 뒤에 해당 함수를 한 번 실행시키는 함수 Date const date = new Date(); const hours = date.getHours(); const minutes = date.getMinutes(); const seconds = date.getSeconds(); 새로운 Date 객체를 만든 후, get~~ 함수를 이용해서 ..

#4. Login

Tip. 일반적으로 string만 포함된 변수나 중요한 정보를 담은 게 아닌 경우 변수명을 전부 대문자로 표기 Element 찾기 const loginForm = document.getElementById("login-form"); const loginInput = loginForm.querySelector("input"); const loginButton = loginForm.querySelector("button"); 위와 같이 꼭 document 기준으로 element를 찾지 않아도 된다 Form 자동제출 막기 * form 안에 있는 button을 누르거나, type이 submit인 input을 클릭하면 작성한 form이 submit된다 function onLoginSubmit(event) { ev..

#3. JavaScript on the Browser

HTML element를 가져오는 방법들 document.getElementById("id값"); document.getElementsByClassName("class이름"); document.getElementsByTagName("tag명"); 각각 id, class, tag 이름을 가지고 요소를 찾아올 수 있다 하지만 querySelector를 사용하면 css selector를 사용하여 element를 검색할 수 있기 때문에 더 편하다 document.querySelector(".hello h1"); document.querySelectorAll(".hello h1"); querySelector는 hello라는 클래스 명을 가진 요소 안의 h1 태그를 단일 element로 반환한다 querySelec..

#2. Welcome to JavaScript

Variable (변수) const a = 1; let b = 2; var c = 3; // 재선언 var c = 5; // 재할당 b = 3; const: 재선언 X, 재할당 X let: 재선언 X, 재할당 O var(구버전): 재선언 O, 재할당 O * 따라서 재선언이 가능한 var는 사용하지 않는다 Object (객체) const player { name: "nico", points: 10, isMove: false sayHello: function() { } } 하나의 player에서 파생되는 여러 property 값을 묶어주기 위한 구조 * const로 선언하여도 player 내 오브젝트들의 값을 변경할 수 있다 * 함수명: 구현할 함수 내용의 형태로 객체가 가지는 함수를 만들어줄 수 있다 Fu..

Section 8. Scene - Scene Manager

Assets > Scripts > Utils > Define.cs에 씬과 관련된 열거체를 추가로 정의해준다 public enum Scene { Unknown, Login, Lobby, Game } 그리고 씬을 관리하기 위한 새로운 스크립트 Assets > Scripts > Scenes > BaseScene.cs를 생성해준다 public abstract class BaseScene : MonoBehaviour { public Define.Scene SceneType { get; protected set; } = Define.Scene.Unknown; void Awake() { Init() } protected virtual void Init() { Object obj = GameObject.FindObje..

Section 7. UI - 코드 정리

1. getOrAddComponent 함수를 extension method로 변경해준다 Assets > Scripts > Utils > Extension.cs public static class Extension { public static T GetOrAddComponent(this GameObject go) where T : UnityEngine.Component { return Util.GetOrAddComponent(go); } public static void AddUIEvent(this GameObject go, Action action, Define.UIEvent type = Define.UIEvent.Click) { UI_Base.AddUIEvent(go, action, type); } }..

Section 7. UI - 인벤토리 실습

인벤토리 패널 산하에 들어가는 Inven_Item 스크립트는 UI_Popup도, UI_Panel도 아니기 때문에 UI_Base를 상속받게 되는데, 그럼 팝업과 씬에서 만들어두었던 Init 함수를 사용하지 못하기 때문에 그 부분을 수정해준다 public abstract class UI_Base : MonoBehaviour { public abstract void Init(); } UI_Base 스크립트에 이렇게 추가해준다 이때 virtual로 선언한 것과 달리, abstract로 선언한 경우, 자식 클래스에서 반드시 재선언을 해주어야 사용할 수가 있다 그리고 Ui_Popup.cs, UI_Scene.cs에서 기존에 virtual Init으로 선언했던 함수를 override Init으로 변경해주면 된다

Section 7. UI - UI Manager

UI를 팝업 UI와 고정형 UI로 구분하여 생각하기 UI > Popup > UI_Popup.cs, UI > Scene > UI_Scene.cs 스크립트를 각각 만들어주고, 이 베이스 스크립트들은 MonoBehaviour 대신 UI_Base를 상속받는다 - 팝업과 씬 스크립트를 새로 만들 때 위 베이스 스크립트를 상속 받아서 사용 - Popup, Scene 폴더 내 스크립트들은 이제 UI_Base 대신 UI_Popup, UI_Scene 을 상속받으면 됨 UIManager _ui = new UIManager(); public static UIManager UI { get { return Instance._ui; } } UIManager 스크립트를 만들어준 뒤, Manager.cs에 연결시켜준다 public ..

Section 7. UI - UI 자동화(이벤트)

Assets > Scripts > UI > UI_EventHandler.cs (EventSystem이 클릭을 감지하여 이벤트를 뿌려주면 UI에서 캐치해서 콜백 함수를 날려주는 역할, 드래그 이벤트를 감지할 오브젝트에 부착해주면 된다) public class UI_EventHandler : MonoBehaviour, IPointerClickHandler, IDragHandler { public Action OnClickHandler = null; public Action OnDragHandler = null; public void OnPointerClick(PointerEventData eventData) { if (OnClickHandler != null) OnClickHandler.Invoke(even..

Section 7. UI - UI 자동화(바인딩)

public class UI_Button : MonoBehaviour { Dictionary _objects = new Dictionary(); enum Buttons { PointButton } enum Texts { PointText, ScoreText } private void Start() { Bind(typeof(Buttons)); Bind(typeof(Texts)); } void Bind(Type type) where T : UnityEngine.Object { string[] names = Enum.GetNames(type); UnityEngine.Object[] objects = new UnityEngine.Object[names.Length]; _objects.Add(typeof(T), ..