@Sun,

First, You should setup meta format in Unity Editor'setup
1.Open Editor setup
사용자 삽입 이미지
2. Change or Check "Version control mode" and "Asset Serialization mode" ("Visible Meta file", "Force Text")
사용자 삽입 이미지
3. Now close Unity3D and open the "Explorer" and Go your source's path. 
4. Remove not necessary folder and files (You need just 2 folders "Assets" and "ProjectSettings" (I just compress it. however, you can move these folders to other media)
사용자 삽입 이미지
* Please let me know what you block something.


2017/10/13 05:10 2017/10/13 05:10
TAG , ,
간만에 유니티3D 관련 글을 쓰네요.

몇 번의 프로젝트에서 사용했던 티끌 같은 팁인데 많은 분들이 모르시는 것같아 소스 하나 남겨둡니다.

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {

    // Use this for initialization
    IEnumerator Start () {

        //for Lambda
        StartCoroutine(ReturnValue( (x) => 
        {
            Debug.Log(x);
        } 
        ));

         //for local value
        int a = 0;
        yield return StartCoroutine(ReturnValue( (x) => 
        {
            a = x;
        }
        ));
        Debug.Log(a);
    }
 
    IEnumerator ReturnValue(System.Action<int> callback)
    {
        yield return null;
        callback(10);
    }
}


핵심은 Lambda 식으로 callback 함수를 구현하는 겁니다. =)
로컬 변수에 값을 할당할때는 반듯이 yield return 명령으로 Coroutine 함수가 종료되고나서 값이 할당됐는지 확인되어야 합니다. (그럼 코루틴 쓰는 의미가.. -_-;;)


2016/04/04 17:00 2016/04/04 17:00
BMFONT로 Font를 뽑으면 데이터가 커진하고 믿겠지만, RGBA 4개 채널에 폰트데이터를 넣으면 용량이 매우 작아진다.
단적인 예로 우리가 흔히 쓰는 나눔폰트나 Noto 폰트의 경우 각각 용량이 4M, 15~16M에 달한다.

* 나눔폰트 용량
사용자 삽입 이미지
* Google Noto sans CJK Kor 
사용자 삽입 이미지

그런데, Packed Font로 뽑으면...
사용자 삽입 이미지
1024*1024 텍스쳐 한장으로 딸랑 782KB 이다. 
(주의 : 유니티에 Import 하는순간 True Color Texture는 1024에서 4M가 소요된다. 하지만, 512라면 1M에 불과해진다. 폰트사이즈 32정도면 512에 떨어지니 실망하지 말자)
특히, Font 파일을 앱속에 탑재함으로써 발생하는 기타 여러 잡다한 문제도 없고 형좋고 매부 좋고, 암튼 사용하는 방법에 대해 알아보자.

먼저, BM Font 설치하고 한글 파일을 다운로드받자.

- BMFONT : http://www.angelcode.com/products/bmfont/
- 한글텍스트파일 : http://www.wolfpack.pe.kr/attachment/1142498515.txt

이제 BM Font를 실행하고 다음과 같이 설정한다.
* 자세한 BM Font 사용법은 http://www.wolfpack.pe.kr/806 

1. 폰트 셋팅에서 Size를 62정도 입력했을때 1024사이즈에서 공간이 남았었다. (Super Sampling을 켜서 폰트가 이쁘게 나오게 하자.)
사용자 삽입 이미지
2. 익스포트 옵션에서 Bit Depth를 32로 변경하고 "Pack chars in multiple channels" 옵션을 켜자.
사용자 삽입 이미지
3. 이제 익스포트하고 Unity3d로 옮겨 놓자.
사용자 삽입 이미지
4. Texture Import 옵션을 다음과 같이 Advance로 바꾼후 변경하자.
사용자 삽입 이미지
5. NGUI Font Maker를 열어서 폰트를 만든다.
사용자 삽입 이미지
6. 파일이 생성된 모습. 하지만, 하나 더 남았다.
사용자 삽입 이미지
7. NotoFont 메터리얼을 Inspector 창에서 확인하면 쉐이더가 "Unlit/Transparent Colored"로 되어 있을텐데 이걸 "Unlit/Transparent Packed"로 변경해야 한다.
사용자 삽입 이미지
8. 적용결과
사용자 삽입 이미지

* 물론 Dynamic Font로 적용하면 편하다! 하지만, Texture Resize 될때 종종 스냅드래곤을 채용한 핸드폰에서 폰트가 사라지거나 별별 문제가 다 발생하고 그거 잡는 시간에 BMFont로 뽑는게 더 빠르다.
* Packed Font는 외곽 효과라던가... 이팩트 먹이기가 다음과 같이 잘 안된다. 
사용자 삽입 이미지


2015/08/28 17:11 2015/08/28 17:11
오늘은 포프님의 2번째 예제인 transparent를 구현해볼겁니다. (http://www.gamedevforever.com/59)
사용할 텍스쳐는...
사용자 삽입 이미지
대충 지운 아담과 이브의 팬티입입니다. =)
물론 취향에 따라... ㅡㅡ;;



어제와 같이 Sampled2D를 하나 생성합니다.
사용자 삽입 이미지
NodeName을 설정하구요...

사용자 삽입 이미지
Inputs탭에서 Unity에 Import한 텍스쳐를 설정합니다.

사용자 삽입 이미지
이제 연결하면...

사용자 삽입 이미지
아래의 그림과 같이 보일겁니다.

사용자 삽입 이미지
Master를 가만히 보니 Alpha가 보이는 군욤!

이녀석을 A에 연결하면 뭔가 될 것도 같습니다!!!
사용자 삽입 이미지
그리고 Preview를 업댓하면...

사용자 삽입 이미지
바뀌는게 없습니다! 정말입니다.

뭔가 빠진게 분명합니다. Alpha가 먹지 않는다니... 비밀은 바로 Setting에서의 설정입니다.


Default Setting에서는 다음과 같습니다.
사용자 삽입 이미지

다음과 같은 부분을 수정해주세욤.
사용자 삽입 이미지
이제 Preview를 눌러보면...
사용자 삽입 이미지
깔끔한 투명캄사!!

하지만, 포프님의 예제와는 조금 다릅니다.
포프님의 투명 예제는 전체가 반투명인데 비해서 이녀석은 그냥 투명이거든요...


검은색선인 Node위에 마우스를 올려놓고 "우클릭!"하시면 Node가 삭제됩니다. A와 연결된 Node를 삭제하고...
사용자 삽입 이미지
(이거 몰라서 처음에 엄청 혜맸다능... 마우스 우클릭하면 노드 삭제됩니당..)

다시 빈곳을 우클릭해서 Multiply 를 하나 만듭니다.
사용자 삽입 이미지
Operation 밑에 있는 녀석이니까... 아무래도 뭔가를 연산하는 녀석이겠죠? (진실은.. 그냥 곱하기 연산자입니다. ㅡㅡ;;)

뭐 암튼 일케 만든뒤에....
사용자 삽입 이미지
Preview를 보면...
사용자 삽입 이미지
뭔가 된것 같기도 하고 아닌것 같기도하고... 뭐 어쨌든 우리가 원하는 대로 되어가는 것 같습니다.
Multiply에도 Arg1, Arg2가 필요한데 하나가 없는것도 찜찜하고 Arg2에 들어갈 녀석을 다음과 같이 만듭니다.
사용자 삽입 이미지
오른쪽 Node탭에서 "_Alpha"라고 이름을 정해준뒤 Add를 클릭
사용자 삽입 이미지
다음과 같이 연결합니다.
사용자 삽입 이미지
Inputs 탭을 보면 다음과 같이 변해 있죠.
사용자 삽입 이미지
Preview클릭!
사용자 삽입 이미지
Inputs탭에 있는 _Alpha값을 슬라이더로 조정해보면,
사용자 삽입 이미지
사용자 삽입 이미지
텍스쳐 자체의 투명도가 조정되는게 보일겁니다.
이것으로 포프님의 예제와 동일하게 결과를 얻었습니다!

다시한번 포프님 만쉐! ㅜㅡ
2013/03/30 10:19 2013/03/30 10:19
*본 강좌는 www.unitystudy.net에 게재되고 있으며, 링고게임즈의 재산입니다. 무단 불펌을 혀용하지 않습니다.
사용자 삽입 이미지


집에 터덜 터덜 와서는 C4D 가지고 모델링 연습해보다가... (아웅~ 짜증입니다.)
강좌마저 올려 놓고 자려고 또 열었습니다. T_T
사용자 삽입 이미지

암튼 마지막 NGUI 강좌로 서버에서 이미지 받아 오는 겁니다. =)
아시죠? UI Tool으로 새로운 UI Root 만드시는거... (자세한 설명은 생략합니다.)
사용자 삽입 이미지

위젯툴에서 Simple Texture를 만들어 줍니다.
사용자 삽입 이미지

그럼 이렇게 변하면서...
사용자 삽입 이미지

Game화면에는 아무런 변화가 생기지 않습니다.
사용자 삽입 이미지

이제 만만한 이미지를 하나 Import합니다.
사용자 삽입 이미지

방금 Import한 images.jpg파일을 클릭한뒤 마우스 우클릭하여 Material을 만듭니다.
사용자 삽입 이미지

아래와 같이 Material이 생성되었으면...
사용자 삽입 이미지

Material의 inspector 창에서 아까 Import한 images.jpg를 넣어줍니다.
사용자 삽입 이미지
* 주의점은 Shader를 Until/Texture로 설정하여 광이 없이도 랜더링이 원래 색으로 되도록 설정했습니다.
마지막으로 Simple Texture를 클릭해서 방금 설정한 Material을 할당합니다.
사용자 삽입 이미지

여기까지 끝나시면 아무일 없던 Game창이 변화됩니다.
사용자 삽입 이미지

이제 우리의 코딩질 시작!
다음과 같이 DownloadImg.cs 파일을 만들고...
사용자 삽입 이미지

코딩입니다. =) (효과음은 두다다다다~~~ 또는 CTRL+C, CTRL+V)
using UnityEngine;
using System.Collections;

public class DownloadImg : MonoBehaviour {
   //Material을 Asign합니다.
    public Material tmpTexture;

// Use this for initialization
void Start () {
        //아시죠? 코루틴!
        StartCoroutine(Init());
}

// Update is called once per frame
    IEnumerator Init()
    {
        //URL을 유니티의 점프하는 남자로 했습니다. =)
        string url = "http://www.unity3d.com/promo/unity4/images/jumping-man.png";
        //웹서버를 연결합니다.
        WWW www = new WWW(url);
        //데이터 수신이 끝날때까지 대기합니다.
        yield return www;
        //메터리얼의 메인Texture를 다운로드 받은 Texture로 변경합니다.
        tmpTexture.mainTexture = www.texture;
    }
}
이제 만들어진 소스를 Simple Texture에 Attach시켜 주세요.
사용자 삽입 이미지

플레이 버튼을 누르면~~~ (짜잔~~)
사용자 삽입 이미지

이것으로 NGUI의 기초강좌 +  알파가 모두 끝난것 같아요.
하시는 게임 대박나시길 바랍니다. =)
또 다른 분야의 강좌로 뵙길 기원합니다. 꾸뻑~
2013/01/27 23:51 2013/01/27 23:51
TAG ,
*본 강좌는 www.unitystudy.net에 게재되고 있으며, 링고게임즈의 재산입니다. 무단 불펌을 혀용하지 않습니다.

지난번 강좌 마친뒤로 NGUI는 강좌를 마감하려 했습니다만...
"이호민"님의 낚시질에 낚여서 파닥거리며 강좌 1~2개를 더하기로 했어요.
(유니티 코리아 입사하시려면 낚시를 잘하셔야 합니다. ㅋㅋㅋ)
* 월척이구나~~~
사용자 삽입 이미지

오늘 급하게 결정한거라 딱히 뭐할까? 고민하다가 NGUI쓰시면서 부딪히는 가장 큰 문제가 Object와 NGUI간의 Position을 Match시키는 것 아닐까? 하는 생각에 급히 글을 써보기로 했습니다.
먼저 Unity의 카메라 좌표구조를 한번 흩어 보겠습니다.
첫째는 월드좌표입니다. 우리가 알고 있는 "왼손좌표계"입니다.
사용자 삽입 이미지
두번째는 스크린좌표입니다.
사용자 삽입 이미지

세번째는 뷰포트(Viewport)좌표입니다.
사용자 삽입 이미지
스크린좌표와 유사하면서도 다른 좌표계를 가지고 있습니다.
정확한 개념은 다음의 그림을 보시면 조금 이해될 것 같네요. (물론 유니티와 좌표축이 다릅니다.)
사용자 삽입 이미지
조금 감이 오시나요? 카메라를 저 눈이라고 생각하시면 될듯 싶습니다.
오늘은 여기서 부터 출발해보죠.
우리가 사용하는 WorldToScreenPoint같은 Vector3를 Vector2로 어떻게 내부적으로 변환하고 있을까요?
이득우님께서는 아마도 정확히 알고 계시겠지만, 카메라에 착~ 달라 붙어 있는 저 ViewPort를 통해서 Screen좌표로 전환하는게 아닐까?하는 추정을 하고 있습니다.
(예를 들어 camera.WorldToScreenPoint(transform.position)을 하면 Y축이 반전되어 출력됩니다. 현재의 제 지식으로는 이러한 현상을 봤을때, World좌표<->Viewport좌표<->Screen좌표로 변환되지 않을까? 하는 생각이 들어요.)
암튼 이런게 있다는 것과 뭔가 가상세계의 좌표를 2D로 변환하려면 Viewport라는 녀석을 거치면 편하다는 걸 알게되었으니 이걸 이용해 World좌표의 Object를 따라다니는 Label을 하나 만들어 보죠.
암튼 UI Root를 추가해서 (물론 2D GUI 레이어로...) 다음과 같이 만들었습니다.
사용자 삽입 이미지

그리고 Cube를 하나 추가 했고... (어두우시면 Camera에 Light를 하나 넣으시길...)
사용자 삽입 이미지

그리고 1강에서 했었던 Label을 위젯툴을 사용해 생성합니다.
사용자 삽입 이미지

다음과 같이 됐다면 잘 된 겁니다. (여기서는 NGUI가 가지고 있는 폰트를 사용했습니다.)
사용자 삽입 이미지

이제 Scene에디트에서 Cube를 움직여 보겠습니다.
(Cube의 좌표는 x 2, y -1, z 0입니다. 카메라의 좌표는 x 0, y 0, z -5)
사용자 삽입 이미지

이제 코딩질~!
사용자 삽입 이미지

위와 같이 FollowText를 하나 만들고 다음과 같이 코딩을 합니다.
using UnityEngine;
using System.Collections;
public class FollowText : MonoBehaviour {

   //큐브를 할당할 녀석입니다.
    public GameObject target;

// Update is called once per frame
void Update () {
        //월드좌표의 카메라객체입니다.
        Camera worldCam = NGUITools.FindCameraForLayer(target.layer);
        //GUI객체의 카메라 객체입니다.
        Camera guiCam = NGUITools.FindCameraForLayer(gameObject.layer);

        //타겟의 포지션을 월드좌표에서 ViewPort좌표로 변환하고 다시 ViewPort좌표를 NGUI월드좌표로 변환합니다.
        Vector3 pos = guiCam.ViewportToWorldPoint(worldCam.WorldToViewportPoint(target.transform.position));
        //Z는 0으로...
        pos.z = 0f;

        //Label의 좌표를 설정합니다.
        transform.position = pos;
}
}
이제 다음과 같이 Label에 Attach하고 Cube를 할당합니다.
사용자 삽입 이미지

이제 플레이~~~
사용자 삽입 이미지

사용자 삽입 이미지

이리 저리 움직여보시면 될 듯 싶네요.
몇가지 조합하시면 이런게 가능합니다. =)
사용자 삽입 이미지
그럼~ 오늘은 여기까지 =)
수고하세욤~!
2013/01/27 23:39 2013/01/27 23:39
TAG ,
안녕하세요? 글뻥입니다.
(이득우님께 잡혀서 열심히 하라는 일은 안하고 강좌 올리는... ㅋㅋ)
연일 강추위 건강 유의하시기 바라며, http://www.unitystudy.net에 올린 글을 옮겨서 올려봅니다.
먼저 NGUI를 사시기 전에 (꽤 비싸죠... ㅋ) Free 버전으로 초간단 NGUI 강좌를 진행해 보겠습니다.
사용자 삽입 이미지
(어서와~ NGUI는 처음이지?)
다운로드는
http://forum.unity3d.com/threads/124032-NGUI-Free-Edition
여기서 받을 수 있구요. NGUI 로고 클릭하면 unitypackage 다운로드 가능합니다.
그럼 import하고 시작!
사용자 삽입 이미지
import가 완료되면 메뉴에 NGUI라는 넘이 생기고 그걸 클릭하면 이제 모든 준비가 완료됩죠. 네네
사용자 삽입 이미지

영어 울렁증이 올라오지만 꾸욱 참고 가장 많이 쓰는 기능들만 간단히 살펴봅시다.
가장 많이 궁금해 하시는 부분이 바로 한글 출력일텐데요.
이것 부터 짚고 넘어가죠.
우리의 공짜주의에 입각해서 네이버의 나눔폰트를 사용하겠습니다.
http://hangeul.naver.com/font
폰트 설치후 BMFONT라는 녀석을 다운 받아야 하는데욤. 이녀석은...
http://www.angelcode.com/products/bmfont/
여기서 다운로드 가능합니다.
그리고도...
아직 다 준비가 안됐습니다.
Font파일중에 한글만 뽑아낼 녀석이 필요하니까요. 많이 사용하는 한글만 뽑아낸 txt파일이 필요합니다.
첨부파일로 저희쪽에서 사용하는 한글 파일을 드리지요. (서비스 확실하게...)
드디어 모든 준비가 끝났습니다.
사용자 삽입 이미지

일전에도 설명드렸듯이... 이바닥이 원래 이럽니다.
쉽다고 해놓고 뒷통수 치기... 이런게 뭐..
암튼... 이제 BMFont를 실행합니다.
사용자 삽입 이미지
이렇게 생긴 녀석이 뜰텐데요.
Option에서 폰트설정을 다음과 같이 해줍니다.
사용자 삽입 이미지

폰트를 25폰트 이상 올릴 수도 있겠지만.. 나중에 용량관리하시며 정신건강에 해로 울 수도 있사오니... 걍 25폰트로 뽑습니다. 이렇게 뽑으면 딱 1024x1024 사이즈의 텍스쳐에 들어갈 수 있죠.
Option에서 Export Option을 클릭하고 다음과 같이 1024x1024, Alpha값이 있는 흰색, text에 png로 뽑아냅니다.
사용자 삽입 이미지

이제부터 진짜입니다.
첨부된 KS1001.txt파일을 읽어 들입니다. "Edit"에서 Select char from file로 읽을 수 있죠.
사용자 삽입 이미지

그럼 아래와 같이 txt파일에 있는 폰트만 highlight됩니다.
사용자 삽입 이미지

이제 제대로 출력되는지 Option메뉴에서 Visualize를 클릭해서 확인합니다.
아래와 같이 1024x1024 사이즈에 한장에 들어오면 잘 따라오신겁니다.
사용자 삽입 이미지

마지막으로 Export합니다.
Option에서 "Save..."어쩌구 된넘을 누르면 끝.
사용자 삽입 이미지

Export된 파일중에 "fnt"확장자를 "txt"로 고쳐줍시다.
사용자 삽입 이미지

사용자 삽입 이미지

위와 같이 고쳐주시면 한글 사용할 준비가 정말... 진짜 완료되었습니다.
사용자 삽입 이미지

위와 같이 Font폴더를 만들고, 아까 변경해준 이름의 파일을 Drag&Drop해서 Unity로 Import 시킵니다.
NGUI메뉴에서 Font Maker를 클릭해, 다음의 화면을 호출하도록 합시다.
사용자 삽입 이미지

Font Data에는 ".txt"파일을 나머지 texture에는 아까 생성한 ".png"를 Drag&Drop으로 넣어줍니다.
그럼 다음과 같이 알수 없는 욕을 해대면서 UI가 변경될 겁니다.
사용자 삽입 이미지

이럴때 Fuc* u를 날려주는 Sense... 이제 X 먹으라고 빨간색 버튼 눌러주면...
다음과 같이 폰트 Atlas가 생성됩니다.
사용자 삽입 이미지

(한글 한번 쓰기 디따 힘들군요. T_T)
드디어~~ 진짜.. NGUI 강좌들어갑니다.
사용자 삽입 이미지

NGUI 메뉴에서 "Create a New UI"를 누르고 Layer를 하나 추가합니다.
사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

(쓸데없는 고퀄로 차례로 이미지를 보여드렸슴돠... ㅡㅡ;;)
이제 과감히 버튼 클릭!
사용자 삽입 이미지

그럼 다음과 같이 하이라키가 변경되는게 보이실 겁니다.
사용자 삽입 이미지

이제 다시 NGUI 메뉴에서 Create a Widget 버튼을 눌러줍니다. 살포시...
사용자 삽입 이미지

위젯 툴에서 Label로 변경하고 "Add to" 버튼을 클릭!
사용자 삽입 이미지

갑작이 화면이 바뀌면서... New Label이라는 메시지가 보입니다.
사용자 삽입 이미지

인스펙터 메뉴에서 설정을 변경하면...
사용자 삽입 이미지
사용자 삽입 이미지

변경 완료!
오늘은 간단히 Label을 한글로 사용하는걸 봤습니다.
담 강좌는 버튼한번 해볼까요?
사용자 삽입 이미지
* 본 강좌의 저작권은 링고게임즈에 있습니다.
출처없는 불펌은 법대로 할겁니다.
KS1001 파일입니다.
2013/01/04 21:31 2013/01/04 21:31