2017년 2월 24일 금요일

Unity3D 외부 리소스 가져오기

유니티로 빌드하면 에셋이 묶여서 엑세스가 불가하게 된다.
대량의 에셋을 추가하려면 에셋 번들을 이용하면 되는데,
이런 경우 말고 직접 리소스를 추가하고 싶은 경우가 있다.

최근 프로젝트에서 필요해서 하는김에 간단히 정리해봤다.
처음 하는 사람들에게 도움이 되길 -_-*

# Resource.Load 사용하기

private void ResourceLoadSample(){

  Texture2D texture = new Texture2D(0, 0); 
  string PATH = "Texture/image.jpg";    // 이미지 파일 패스를 써준다. 
  //중요한 것은 유니티 프로젝트 Assets/Resource/ 폴더 이후의 경로를 써주는 것이다. 이 폴더는 맘대로 바꿀 수가 없다.
  texture = Resources.Load(PATH,typeof(Texture2D)) as Texture2D;  // 이미지 로드
  targetObject.mainTexture = texture;  // 타겟 오브젝트에 메인 텍스쳐를 넣어준다.

}

# System.File.IO로 직접 가져오기
Resource 폴더가 아니라 다른 폴더 특히 StreamingAssets에서 가져오려면

Resource.Load 함수를 쓰지 말고 직접 System.File.IO 로 가져와야 한다.
byte[] 로 가져온 다음에 Texture2D.LoadImage()를 사용하여 텍스쳐2D로 읽어오면 된다.



private void SystemIOFileLoad(){

byte[] byteTexture = System.IO.File.ReadAllBytes(Path); 
    if (byteTexture.Length > 0) 
    { 
        texture = new Texture2D(0, 0); 
        texture.LoadImage(byteTexture); 
    } 
}


# 원하는 경로/파일에 엑세스 하기

# StreamingAssets 폴더의 하위 폴더/파일에 접근해본다.
Path = System.IO.Path.Combine(Application.streamingAssetsPath, path); // path = 하위폴더 "하위폴더1/하위폴더2/file.png";


2017년 2월 22일 수요일

블로그 소스코드에 하일라이트 적용

귀찮아서 코드를 적당히 올렸는데,
눈에 거슬려서 오늘 그냥 달았다.

아주 잘 준비가 되어있어서 그냥 하면 되는데 귀찮음이 뭔지..

아래는 highlightjs 사이트 링크 (사용법을 꼭 읽어보자.)

https://highlightjs.org/usage/


cdnjs 로 블로그 스킨 템플릿을 열어서 html 편집을 한다.
아래의 코드 추가

<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/default.min.css" rel="stylesheet">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js">
<script>hljs.initHighlightingOnLoad();

사용 법은

<pre><code>코드</code></pre>

이것으로 끝!
간단!
귀찮다고 미루지 말고 진작할걸...
하일라이트 스타일은 나중에 짬이 날 때 바꾸는 것으로 -_-;

Unity3D에서 uGUI Button 을 동적으로 생성할 때, 클릭 이벤트 추가 하는 방법

uGUI 로 동적 버튼을 생성할 때 코드로 클릭 이벤트를 추가하려면,
아래와 같은 방법으로 onClick 이벤트를 추가한다.


_spawnedButton.GetComponent<Button>().onClick.AddListener(delegate() { 게임오브젝트.GetComponent<컴포넌트 클래스 이름>().실행할 함수(); });

2017년 2월 21일 화요일

Unity3D 용 Json Parser - JsonUtility(Unity3D 5.3 Later), JsonObject

Unity3D로 Json 파일을 좀 사용할 일이 있어서 알아보았다.

그 동안 기획일 하면서 데이터만 만들었지,
직접 뭔가를 해볼일은 없었는데 이참에 해보는 것으로...

-------------

Unity3d Json Parser를 검색해보면

- JsonFX (가장 편하다는 평인데, 사이트 접속 불가. DLL 은 구했지만 스킵.)
- LitJson (iOS 이슈 게시물이 상당히 많다.. 위험)
- MiniJson (EastFever 님의 추천!!)
- JsonObject (직접 테스트 해본 것. 문제 없음)

등이 나오는데

일단은 JsonObject 를 사용해봤다.
이유는 Unity3D Asset Store에 등록되어있는데다가 무료고,
다들 잘 사용하고 있는 것 같아서 선택했다.

다운로드 및 레퍼런스 위키는 아래 주소에서 확인 가능하다.
http://wiki.unity3d.com/index.php/JSONObject#Download

나는 간단하게 읽고 쓰기만 할 생각이라서 뭐 다른건 지원된다고 해도 그러려니 상태였다.!
당연히 유니티 5.5에서도 문제 없었기에 이걸로 써야지~ 하고 결정!!!


-------------


그.. 그런데... 두둥!
조금 더 알아보다 보니,

유니티 5.3 부터 JsonUtility 라는 내장 API 가 생긴 것이다. 두두둥..!!

(몰랐다니, 아니 대수롭지 않게 보고 흘려서 까먹은듯,
릴리즈 블로그 읽기를 소홀히 한 제 탓입니다. T_T)

그래서 바로 쓱쓱 테스트 !!!

일단 레퍼런스 문서를 보자.
https://docs.unity3d.com/ScriptReference/JsonUtility.html


# ToJson 사용 방법 (코드 예제)


using UnityEngine;

[System.Serializable]
public class MyJsonClass
{
    // 사용할 Json Key 를 정의
    public int level;
    public float timeElapsed;
    public string playerName;

}

public class JsonUtilityTest : MonoBehaviour {

    private void WriteJSon() {
        MyJsonClass myObject = new MyJsonClass();
        myObject.level = 5;
        myObject.timeElapsed = 14.75f;
        myObject.playerName = "Kpaper ToJson Test";

        string json = JsonUtility.ToJson(myObject);
        Debug.Log(json);
    }
}

# FromJson 사용 방법. (더 자세한 내용은 위의 레퍼런스 사이트보면 잘 나와 있다.)


JsonUtility.FromJson<MyJsonClass>(json);

------

딱 내가 원하는 것만 간단하게 쓸 수 있어서 좋았다.
손쉽게 시리얼라이즈!

아무래도 엔진에 종속되서 개발을 하다 보니,
외부 에셋을 쓰기 보다는 내장된게 좋을 것 같아서 방향 선회!를 하는 것으로 결론...

끝!

P.S : 교훈. 멀리서 찾지 말자 -_-;;;

-----------------------------------------------------

[내용 업데이트]

으헉!!
JsonUtility는 Json 타입 중 Property Type 에는 사용할 수 있는데, Dictionary Type 은 사용할 수 없다.

구글 선생님한테 물어봐도 고통, 포럼 유저들도 다 같이 고통 중이었다.
(언젠간 업데이트 되지 않을까 하고 헛된 희망을 가져봤다.)

하지만 계속 구글링 해본 결과, 다행히 구글 선생님은 일본 블로그 하나를 추천해주셨다.
http://kou-yeung.hatenablog.com/entry/2015/12/31/014611
(杏仁さん、ありがとうございます。 T_Td)

ISerializationCallbackReceiver 를 이용하는 방법이다.

이걸로 거의 해결! (왜 거의인지는 나중에 다시 포스팅 하겠다. ㅜㅜ)

P.S 2 : 그냥 평범하게 선구자분들에게 추천 받은 것으로 할 걸, 왜 그랬을까. ㅠ_ㅠ...

<끝>

2017년 2월 17일 금요일

MS Office for Mac (Office 365 구독) 드디어 MacBook Pro TouchBar 지원 업데이트 배포

드디어 맥용 오피스에서 터치바를 지원한다.

터치바를 지원하는 것을 애타게 기다렸던 것은 아닌데...
(적어도 MS의 생산성 제품을 이용할 때는 터치바가 너무도 불편하여... ㅠㅠ 펑션키 돌려줘!)

그래도 MS가 이에 대해서 개선을 해준다면 그래도 좋아지지 않을까 하여,
업데이트 예정 기사를 보고 나름 기다리고 있었는데...

드디어 오늘(어제?) 일반에도 릴리즈되었다. (미국시간으로 2/16)


<오피스 제품중 하나를 실행해서 업데이트 확인을 눌러준다.>

현재 설치 중이라서, 설치하고 소감을 간단히 업데이트 해보면,


두근두근





소감.

서식 관련 기능들이 추가되고 눈에 잘 띄게 되었다.

엑셀 F2와 F4를 엄청 사용하는데, 이건 아예 사라져버렸다.

엑셀보다는 파워포인트 쪽이 더 쓸만한 것 같다. 리본메뉴의 일부가 터치바에도 클로닝되어 보여지는 느낌.

터치바 맞춤 설정이 가능할 것 같은데, 메뉴를 찾을 수 없다. 추후 업데이트 될려나? ㅜㅜ

뭔가 기대를 많이 했던것은 아닌데, 당장 쓰는데는 아직 별 차이가 없다.

맥용 오피스는 윈도우에 비해 단축키가 적다는 느낌이었는데, 터치바가 그 자리를 대신할 수 있을지는 아직도 모르겠다.

MS 제품군은 역시 일반 키보드 연결해서 쓰는 편이 나을지도 모르겠다.

작업 편의상 맥에서 MS 오피스를 쓰고 있긴 한데, 역시 오피스는 윈도우에서 써야겠다.

일단 맞춤 설정기능을 쓸 수 있게 되면 내가 쓰기 편하게 고쳐놓고 다시 평가를 하는 것으로 마무리.



참고 링크 : http://appleinsider.com/articles/17/02/16/microsoft-rolls-out-macbook-pro-touch-bar-support-to-all-office-for-mac-suite-users

2017년 2월 6일 월요일

Wacom CTH-470 windows 10 Pro 에 설치하기

이번에도 드라이버 문제 발생!

최신 드라이버를 설치하면 장치를 찾을 수 없다고 한다.

경험을 살려 예전 드라이버를 설치하니 정상 작동 했다.

윈 10 프로에서

펜태블릿 드라이버 5.3.5-3 에서 동작 확인


http://cdn.wacom.com/u/productsupport/drivers/win/consumer/pentablet_5.3.5-3.exe

2017년 2월 1일 수요일

SNFaceCrop 자동 얼굴 크롭 툴 추천 (Auto Face Crop Tool)

자동으로 얼굴 잘라주는 툴 추천



http://deteksiwajah.blogspot.kr/2011/11/snfacecrop-14-is-released.html

OpenCV 를 이용하는 것 같은데,  윈도우 바이너리만 배포 중인게 조금 아쉽다.

얼굴 학습 데이터 정리할 때 사용하면 유용하다.



아래와 같이 입력하면 배치로도 작업 가능

SNFaceCrop -d c:\myphotos -f *.bmp -ex 50 -ey 50

myphotos 를 나의 작업 원본이 있는 경로 *.bmp 나 png나 jpg 로 하면 되고

-ex 와 -ey 는 확대할 퍼센티지


Croped 폴더 결과물을 보면서 제대로 잘렸는지 확인을 해줄 필요는 있다.
3~5% 정도 오인식 결과물이 있는 듯.