유니티에서 변수를 선언할 때, 


[HideInInspector]를 붙여서 변수들을 생성하는 것을 볼 수 있다.

해석을 해보면, "Inspector 안에서 감춘다" ??


맞다. 해석 그대로이다. 


public으로 선언된 변수를 인스펙터 뷰에서 보이지 않게하는 구문이다. 


이상하다? private를 사용하거나 public을 안 쓰면 되는데 왜 이것을 사용하는 것일까?


더 이상한 것들도 있다.


바로 SerializeField라는 것이다.


이것은 반대로, private나 protected로 선언된 변수를 인스펙터에 보이게 하는 명령어이다.


이것 역시... public을 쓰면 되는데 왜 이렇게 위에 선언하는 것일까?


[HideInInspector]


public int number01 = 112;


[SerializeField]


private int number02 = 119;


왜 이러는 걸까?



Posted by sungho88
,

두 개의 오브젝트를 생성 후, 동등한 관계 그리고 자식으로 생성한 것의 위치 차이점을 알아보려 한다.

먼저 아래 사진과 같이 Parent 게임오브젝트와 Child 게임오브젝트가 동일한 관계에 있다고 가정하고,


각각 원하는대로 위치를 놓는다.



그러면 다음과 같이 좌표에 나타난다.(빈 오브젝트이므로 아무것도 보이지 않는다)


그런데 만약, 아래와 같이 부모-자식 관계로 연결을 했다면? 어떻게 될까?


먼저, PARENT는 동일하게 (-35,0,-9)이다. 부모는 아무것도 변화되지 않았다.


하지만, CHILD는 변화되었다. (20,20,0)으로 변경되었다. 이게 무슨 뜻일까?


기본값...Reset을 해보자. 어디로 이동할까? (0,0,0) 이 과연 어디일까?


바로!! Parent의 위치이다. 위 (20,20,0)은 부모 게임오브젝트인 PARENT로부터 떨어진 거리를 의미한다.

이것을 통해 만약 A게임오브젝트 안에 B게임오브젝트를 넣게 되면 B는 A에 종속되어 컨트롤되게 된다.




Posted by sungho88
,

배열(Array) 사용하는 방법


int[] data = new int[10]; // int형의 배열을 10크기로 생성해라.


사용하는 방법


data[0] = 10; // 이렇게 배열에 접근. 배열은 첫 번째 접속을 0번째이므로 마지막은 10이 아니라 9이다.


배열은 바늘과 실처럼 사용하는 것이 바로 반복문 for이다. (while도..)


for(int i = 0; i < data.Length; i++) {

data[i] = Random.Range(0,100);

}


이렇게 하면 data 배열안에 0부터 99까지(100은 포함되지 않음) 값들 중 랜덤으로 배열에 담기게 된다.


for문을 돌면서 


data[0]

data[1]

data[2]

data[3]

data[4]

.

.

.

data[9]


까지 값을 담게 된다.

ㅎㅏ지만!! 

for문이 위처럼 간단하지 않고, 수십줄...이상이 되면 코드가 복잡해져 가독성이 떨어질 것이다.

이 경우, 따로 함수를 생성한 뒤에, 함수를 호출하면 좀 더 깔끔해질 것이다.




Posted by sungho88
,

배너를 붙여 광고를 나오게 하려한다면 애드몹을 사용하면 된다.


1. 먼저 구글 애드몹 플러그인 다운로드(시간이 지날수록 버전이 변경될 수 있음)


깃 허브 홈페이지


이 예제의 경우 v3.10.0을 사용할 것이다.




2. 유니티를 새로 만들거나(테스트하려면) 또는 기존의 프로젝트를 연다.


3. 1에서 받은 .unitypackage파일을 임포트 한다.( Asset - Import Package - Custom Package...)


(임포트 구성 항목)


4. Admob 홈페이지에 들어가서 앱을 추가해줘야한다.


공식 홈페이지


처음이라면, 다음과 같이 가입하기를 진행해야한다. 다음과 같이 나오는데 계정을 생성하자.


몇 가지 확인 절차를 거치면 계정이 확인되며 다음과 같이 뜨면 성공이다.



5. 가입이 성공했다면, 메인화면 왼쪽 탭에 앱을 클릭 --> 첫 번쨰 앱 추가 버튼을 클릭한다.





6. 앱을 애드몹에 추가한다.

있으면 예 없으면 아니요~




7. 광고될 광고 형식을 선택한다. 이 블로그의 경우 배너 광고를 삽입할 것이므로 배너를 선택한다.


선택하면, 광고 단위 이름을 작성하라고 나온다. 이것은 별로 중요하지않다. 임의로 생성하면 된다. 



작성 후, 광고 단위 만들기 버튼 클릭하면 만들어진다.

광고 단위 ID라는 것이 만들어지는데, 이것을 유니티 엔진에서 사용하게 되므로 복사해두자.

유니티로 돌아오자.

유니티에 띄워보자.

새로운 빈 오브젝트 또는 원하는 오브젝트에 스크립트를 생성 후 붙여넣으면 된다.

나는 새로운 프로젝트를 만들었으므로 빈 오브젝트를 하나 생성 후, C# Script를 하나 컴포넌트로 추가하려고한다.

C# Script를 열고, 다음과 같은 코드를 붙여넣는다.



using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;

public class NewBehaviourScript : MonoBehaviour {

    static bool isAdsBannerSet = false;



    // Use this for initialization

    void Start () {



        if(!isAdsBannerSet)

            RequestBanner();

    }

 
    private void RequestBanner()

    {

        #if UNITY_ANDROID

        string AdUnitID = "애드몹 광고 단위ID";

        #else

        string AdUnitID = "unDefind";

        #endif

        BannerView banner = new BannerView(AdUnitID, AdSize.Banner, AdPosition.Bottom);



        AdRequest request = new AdRequest.Builder().Build();

        banner.LoadAd(request);

        isAdsBannerSet = true;

    }
 
}


위에 코드를 붙여넣고,  파란색으로 쓰여진 애드몹 광고 단위ID 부분만

아까 위에서 생성해서 복사해둔 아이디를 붙여넣자.


끝났....다고 하기 전에.

빈 오브젝트에 이 스크립트를 붙여넣자.

그 다음 실행!

Posted by sungho88
,

[개념 소개]

  • 클래스 사용하면 간단한 게임데이터를 간단하고 쉽게 저장할 있음.
  • KEY - VALUE 형식으로 데이터를 저장. 또한, KEY 이용해서 데이터를 조회 삭제도 가능함.

[저장 방법]

  • 저장 가능한 타입은 : Int, Float, String
  • PlayerPrefs.SetInt(“number”,10); // number라는 키로 정수 10 저장하라는 의미.  SetFloat, SetString도, 존재.
  • PlayerPrefs.GetInt(“number”); // number라는 키로 값을 꺼낼 있음 GetFloat, GetString 존재.

[삭제 방법]

  • PlayerPrefs.DeleteKey(“number”); // number라는 키값에 해당되는 값을 삭제함.
  • PlayerPrefs.DeleteAll(); // 모든 데이터를 삭제함(전부 삭제되므로 주의)

[데이터 유무 확인]

  • PlayerPrefs.HasKey(“number”); // number라는 키값이 존재하면 true, 존재하지 않으면 false


Posted by sungho88
,

[AWS] VPC 만들기

서버/AWS 2017. 12. 21. 11:46

AWS에서 이것저것 지우다가 VPC도 지워버렸다. 서브넷도 지웠다. 

뭔지는 몰랐지만, 매우 중요한 것임에는 틀림없다. 

이것이 없어서 EC2인스턴스조차 생성하는데 에러가 발생하였다.

옆에 새 VPC 생성 링크를 클릭해서 VPC 대시보드로 이동한 뒤, 직접 만들 필요없이 기본 VPC만들기를 클릭!

이렇게하면 자동으로 생성된다. 

굳이 직접 만들어서 문제가 발생할 수 있으니, 디폴트 값으로 자동 생성을 추천~



 



Posted by sungho88
,

(참고 자료)

참고 블로그01

참고 블로그02(공홈)


먼저, ELB는 Elastic Load Balancing의 약자. 

EC2를 대상으로 여러대의 EC2 인스턴스로 자동으로 분배하여 웹 트래픽을 분산시켜 주는 역할을 함.


1. 두개의  EC2를 먼저  생성한다. 생성시 Security Group에서 HTTP를 반드시 설정하도록 하자. 


2.왼쪽 탭에서 로드 밸런스를 선택, 로드 밸런스 생성 버튼을 눌러서 진행.



3-1) 원하는 유형을 선택한다. 고성능을 사용할 것이 아니므로 클래식 로드 밸런서를 선택하였다.



3-2) 로드 밸런서 정의에서 로드 밸런서 이름을 기입한다. 그 외에는 건들지않고 다음 버튼 클릭~


하단에 로드 밸런서 포트와 인스턴스 포트


로드 밸런서 포트 : 사용자가 ELB로 접속하는 포트

인스턴스 포트 : ELB에서 웹 서버 인스턴스로 보낼 때 접속하는 포트 


3-3) 보안 그룹 할당! 기존 보안 그룹을 선택할 것인지, 새 보안 그룹을 생성할 것인지 선택!



3-4) 모르겠다. 그냥 패스하고 다음을 클릭하자.



3-5) Ping 경로를 /index.html이 아니라 /으로 변경하자. 그 외에는 그냥 기본으로 두고 넘기자.



3-6) ELB를 통해 로드 밸런스로 등록할 EC2를 체크한다. 하단에 체크는 그대로 놔둔자..


교차 영역 로드 밸런싱 활성화 :

연결 드레이닝 활성화 :


3-7) 태그는 옵션이므로 추가하지 않아도 된다. 그냥 패스~


3-8) 여태까지 했던거 설정 검토!





테스트 타임~


맨 위에서 만들었던 두 개의 인스턴스에 각각 node.js를 설치한다.

적당한 경로에 app.js라는 파일을 생성한다.

그 다음에 서버를 생성하기 위해 다음과 같은 코드를 붙여넣는다.


var http = require("http");

  

http.createServer(function(request, response) {

   response.writeHead(200, {"Content-Type" : "text/html" });

   response.write("Hello ELB - Instance01");

   response.end();

}).listen(80);


response.write("Hello ELB - Instance01");

이 부분을 각각 인스턴스에 다르게 쓴 뒤에 


node app.js를 입력하면 서버가 실행된다.


이제 접속하면 ELB가 적용된다.



Posted by sungho88
,

윈도우에서 Putty를 쓰다가 Mac을 사용하니 미친듯이 쉽다.


먼저, 인스턴스 즉, EC2만든 곳으로 가면 인스턴스 생성 옆에 연결(Connect) 버튼이 존재한다.


연결 버튼을 누르면 연결 방법이 나온다.


첫 번째. 터미널을 오픈한다.(Command + Space한 뒤, 터미널 또는 terminal로 검색)

두 번쨰. EC2 생성할 때 만들었던, 또는 기존에 존재하는 .pem 파일이 존재하는 경로로 이동한다.

세 번째. 그 경로에서 chmod 400 파일이름.pem 을 입력한다.

네 번째. 아래와 같이 예 : 라고 쓰여진 오른쪽 문장을 터미널에 붙여넣는다.


이렇게하면, 터미널에서 접속이 진행되며 yes/no를 물어본다. 이 때, yes를 입력하면 바로 로그인 완료!


이상으로 맥에서 EC2 인스턴스에 접속하는 방법을 정리해보았다.

윈도우의 경우


Puttygen을 찾아서 다운받고,Putty도 다운받고,다시 Puttygen에서 복잡한 과정을 통해

.pem파일을 .ppk로 변경한뒤에 다시 Putty를 열고 생성한 .ppk파일을 더 복잡한 과정을 통해 등록한 뒤에

다시 AWS에 들어가서 IP주소를 복사해서 PUTTY에 붙여넣고 접속.


너무 어렵다.

맥 짱

Posted by sungho88
,

find 라는 명령어로, 디스크에 저장된 각종 파일이나 디렉토리 검색이 가능합니다.



1. 파일 찾기 (파일명 검색)


현재 디렉토리에서, pl 확장자를 가진 모든 파일 찾기

find -name '*.pl'


(현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)



루트에서부터, 즉 전체 하드에서, pl 확장자를 가진 모든 파일 찾기

find / -name '*.pl'




전체 하드 디스크에서, 파일명이 test 로 시작하는 모든 파일 찾기

find / -name 'test*'




전체 하드 디스크에서, 파일명이 .rdb 로 시작하는 모든 파일 찾기

find / -name '.rdb*'




전체 하드 디스크에서, 파일명이 .rdb 로 시작하는 모든 파일 찾기 (-ls 명령 형식)

find / -name '.rdb*' -ls



2. 디렉토리명 찾기


전체 하드 디스크에서, 디렉토리 이름이 test 로 시작하는 모든 디렉토리 찾기

find / -name 'test*' -type d



Posted by sungho88
,

일단, WebStorm에서 Command + ,를 누르면 환경설정 창이 열린다.

여기서 설정은 모두 위 환경설정 창에서 이루어진다.



에러도 아닌것이, 신경쓰이는 warning이 수천개 뜨게 된다.

찾아보니, 가장 많은 것은 Typo : in word 'XXX'


즉, 맞춤법 검사였다. 변수의 경우 뜻이 없게 지어낸것인데 이것들이 전부 경고 밑줄이 그어져서 보기 싫다.

어떻게 없앨까.


File >> Settings >> Editor >> Inspections >> Spelling >> Typo


이렇게 했는데도, 여전히 뺵빽하다. 또 찾아보자.


Unresolved function or method가 뜰 경우 어떻게 할까.

이것을 해제하면 된다.


세 번째로, 이유없이 함수 끝에 에러가 발생한다.

종료되지 않았다(Unterminated statement)는 경고창이 뜬다. 그럴 경우 해결방법?

다음과 같다.

환경설정 창에서 

Settings/Preferences | Editor | Inspections

JavaScript | Code style issues | Unterminated statement 해제!


이렇게만 하면, 왠만한것들은 사라진다.


이제, 사용되지 않는 변수나 함수 아니면


==를 사용할 때 ===를 사용하라는 등의 경고가 발생한다.


냅둬도 되지만, 깔끔하게 에러를 없애고 싶다면 하나하나 잡아줘서 깨끗하게 만들자!


Clear~

Posted by sungho88
,