코드를 짤때, 필드를 public으로 해야할지, private로 해야할지 고민할 때가 있다.


public으로 했다가 잘못된 값이 입력되어 프로그램이 원치않는 동작이 일어날 수도 있다.


그래서 private로 하려고 하니... 해당 클래스에서만 사용이 가능해서 다른 클래스에서 사용하기 어렵다.


은닉화되어있는 private 변수를 사용하는 방법은 겟/셋 함수를 사용하는 것이다.


자바에서도 


private String name;


public String GetName() {

    return name;

}

public void SetName(String name) {

    this.name = name;

}


이렇게 이름을 갖고,


getName() 사용할 경우 name의 값을 얻을 수 있고,


수정하려면 setName() 메소드를 통해 변경을 할 수 있다.


유니티 C#에서는 더욱 간단한 방법을 제공한다.


    class People

    {

        private string name; 

 

        public string Name

        {

            get

            {

                return name;

            }

            set

            {

                if (value.Length > 3)

                    Console.WriteLine("이름은 3자 이상 넘을 수 없습니다.");

                else

                    name = value;

            }

        }


 

이렇게 하면 get은 GetName() 메소드를 대체한다. 즉, 속성 값 name을 반환하는데 사용된다.


 set 접근자는 SetName(String name)을 대체한다.


반드시 다 써야할 필요는 없고 둘 중 한가지만 사용해도 문제가 되지 않는다.


당연히, get접근자 하나만 사용하면 읽어오는 것밖에 할 수가 없고.. set접근자만 사용하면 쓸 수밖에 없다.


 



Posted by sungho88
,

express를 사용시 제이드(Jade)를 사용하여 웹 페이지를 만들때가 있다.

 

express는 템플릿 엔진을 이용해서 웹페이지를 생성하는데 제이드(Jade)가 대표적이다.


이번 글에서는 express에서 Jade 템플릿을 이용한 웹페이지 렌더링 방법에 대해 알아보려고 한다.


Jade 템플릿을 설치하는 방법은 매우 간단하다.


$npm install jade --save


설치한 Jade 모듈을 익스프레스에 설정하는 코드를 추가한다.


[app.js]에


app.set('views', path.join(__dirname, 'views'));

app.set('view engine', 'jade');



Jade 문법

views 폴더에 생성되는 파일

1. index.jade

extends layout

block content
  h1 This is h1
  p Welcome to Hell

첫 줄의 extends 키워드는 다른 파일을 상속한다는 의미이다. 

2. layout.jade

doctypehtml

html
  head
    title This is title!
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    block content

layout.jade 파일에도 body 밑에 block content가 존재한다..

정리하면,

index.jade에서 block content라고 선언을 하고 작성한 코드들은,
layout.jade에서 block content라고 선언한 직후 호출이 된다.

다시말하면,

layout.jade 파일에서 block content라고 선언만 하고, index.jade 파일에서 block content를 정의한다고 할 수 있다.
 

doctypehtml

html
  head
    title This is title!
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    h1 This is h1
    p Welcome to Hell
 
최종적으로 이렇게 되어 실행될 것이다.


////////////////////


Jade만의 특수 태그가 몇 가지 존재하며, 이 특수 태그를 사용하여 페이지를 구성한다.


1. -Code : 자바스크립트 코드를 입력할 때 사용한다.


2. #{Value} : 데이터를 출력한다.


3. = Value : 데이터를 출력한다.


            -for(var i = 0 ; i < data.length ; i ++)

            { 

a(href = "http://www.naver.com") 이동하기 : p #{i}

           -}


이렇게 하면, -을 사용해서 자바스크립트를 정상적으로 사용할 수 있고,

 #{i}를 사용해서 값을 출력할 수 있다. 0 , 1 , 2 , 3 , ...


[결과]


이동하기 : 0

이동하기 : 1

이동하기 : 2

이동하기 : 3

...
..
.


4. div 태그 생성하기


div 태그를 직접 입력하지 않고 #header 태그를 입력하는 것만으로도 : id 속성이 header인 div 태그를 생성.

div 태그를 직접 입력하지 않고 .header 태그를 입력하는 것만으로도 : class 속성이 header인 div 태그를 생성.


body

  #header 

h1 Hello World!

h2 Mr.Jang.


이와 같이 div 태그를 쓰지 않고도 쉽게 생성할 수 있다.

Posted by sungho88
,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class Drag : MonoBehaviour, IDragHandler
{

float distance = 10.0f;
public void OnDrag(PointerEventData eventData)
{
Vector3 mousePosition = new Vector3(Input.mousePosition.x,
Input.mousePosition.y, distance);
transform.position = mousePosition;
}

}


1. 드래그를 하기 위해서는 OnMouseDrag() 함수도 있지만, OnDrag() 함수를 사용할 수도 있다.

2. 먼저, OnDrag()를 사용하기 위해서는 


using UnityEngine.EventSystems; 


을 적어줘서 이벤트 시스템을 사용하겠다는 것을 표기한다.


3. MonoBehaviour뒤에 콤마(,)를 쓴 뒤 IDragHandler를 작성한다. 참고로 IDragHandler 는 인터페이스이다.


4. 3번 IDragHandler를 적으면 에러난다. 즉, 인터페이스에 선언된 메소드를 정의해줘야한다.

형태는 다음과 같다. public void OnDrag(PointerEventData eventData)


5. OnDrag()안에 드래그 했을 때, 일어날 동작들을 적으면 된다. 

이 블로그에서는 마우스 드래그하는데로 오브젝트가 딸려오는 것을 구현하려고 한다.


 


마우스는 평면으로 움직이므로  (x,y)축만 필요하다.


z축은 위와 같이 10으로 지정해줘도 되고, 그냥 오브젝트의 z축을 그냥 기입해도 된다.


그 다음에 transform.position에 mousePosition을 넣음으로써,


드래그할때 mousePosition이 게임오브젝트 위치에 대입되어 마우스 드래그할때 오브젝트가 딸려 움직이게 된다.


이상으로 마우스 드래그를 이용하여 게임오브젝트를 움직이는 방법을 알아보았다.


Posted by sungho88
,