블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2809)
Unity3D (865)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (234)
협업 (61)
3DS Max (3)
Game (12)
Utility (140)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (16)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

Unity3D v.3.5.5f3 Pro / iOS Pro (with 2D ToolKit) 기준.


1. 이미지 자체 최적화


png 등의 이미지를 import 하면 압축된 용량이 아닌 원래 용량으로 인입됨.

아이폰의 경우 pvrtc로 압축하여 용량 줄일 수 있음.


256 x 256 size 이미지 크기 비교

 - RGBA 32bit : 256 kb

 - RGBA 16bit : 128 kb

 - RGBA Compressed PVRTC4 : 32 kb

 - RGBA Compressed PVRTC2 : 16 kb


texture type 설정

 - GUI/HUD 용도로 사용하는 이미지는 GUI로 설정 (이미지 품질이 가장 좋음)

 - 그 외는 Texture 혹은 Advanced 선택

   - Advanced는 Texture 설정에서 사용자가 옵션 선택 가능

   - Advanced에서 "Generate Mip maps" 설정을 해제하면 용량을 줄일 수 있다. 

    (2D에선 불필요. 게임 화면과 카메라와의 거리를 가깝게 잡은 경우 화질 개선에도 도움이 됨)


이미지 비율 조정

 - Unity3d에서는 한 변의 길이가 2의 배수인 정사각형으로 이미지를 사용하게 됨. (2, 4, 8, 16 …)

 - 압축할 때 이를 2의 배수인 정사각형으로 늘려주므로 정사각형 안에 들어가도록 사용할 것.

   - 9 x 9 이미지는 16 x 16 으로 늘어나게 됨.

   - 툴을 통해 이미지 병합시 만약 8 x 16 처럼 비율이 맞지 않을 경우 동일하게 16 x 16으로 늘어나므로

     8 x 8 두장 혹은 다른 이미지를 더 합쳐 16 x 16으로 만드는 것이 용량면에서는 좋음 (성능과 반비례)

   - 실제 1024 x 1024 altas를 PVRTC4로 압축시 용량은 0.5 mb정도 (2048 x 2048 : 2mb)


2. 이미지 화질과의 상관관계


개별 이미지를 atlas로 합치는 것이 성능 면에서는 도움이 됨.

 - but atlas size가 커질 경우 화질이 떨어질 수 있음. (정확한 원인은 파악 못함)

 - 개인적인 관점에서 1024정도가 적당한 듯. (2048 이상일 경우 화질 저하 정도가 꽤 큼)

 - 4096 사이즈의 경우는 iphone에서 이미지가 보이지 않음

    - Edit / Graphic Emulation 설정을 No emulation으로 설정할 경우 보인다는 글이 있었으나 적용해도 보이지 않아 실패함.


3. 용량 & 성능


이미지를 import하고 이를 atlas로 병합하는 과정을 거칠 경우 원본 이미지가 프로젝트에 포함되어 있을 수 있음.

 - 실제 build시 unity에서 사용하지 않는 이미지는 포함시키지 않게 되어 있으나

   Asset 폴더 내에 Resource 폴더가 있을 경우 Resource 폴더 내의 모든 내용은 강제로 프로젝트에 포함됨. (동적 로딩용)

 - 원본 이미지를 별도로 압축하지 않은 경우 앱 용량이 매우 커질 수 있음. =_=


iOS build 시 설정

 - Target Device : iPhone / iPad보다 iPhone 혹은 iPad 단독으로 설정

 - Target Platform : armv6 < armv7 < armv6 & 7

 - Api Compatibility Level : .NET 2.0 Subset < .NET 2.0

 - Stripping Level : Use micro mscorlib < Strip ByteCode < Strip Assemblies < Disabled

 - Script Call Optimization : Fast but no Exceptions < Slow and Safe



출처 : http://neojsm.tistory.com/10

반응형
Posted by blueasa
, |

약 2~3 주 전 빌드를 하다 보니 apk 파일 용량이 50MB 가 넘어가는 상황이 벌어졌다....

(google 정책상 50 MB가 넘어가면 안된다고 한다 )

느낌표


당장 내일이 업데이트라 급한대로 부랴부랴 별로 티 가 나지 않는 아이콘 이미지들의 크기를 줄여서


빌드를 해서 간신히 50MB 이하로 줄이긴 했지만


앞으로 추가적인 콘텐츠에 의해 이미지 들이 추가 될 시에 같은 문제가 발생할거 같기에 


대처방안이 필요했다.


대부분의 리소스 파일들은 CDN 서버에서 다운 받아 사용하는 방식을 쓰고 있으니

제일 큰 용량을 차지하는 Atlas 파일들 또한 CDN 서버에서 다운 받아 로드 하는 방식으로 변경하면

될거 같기에 구글링을 시작 하였다. 


찾아 보니 의외로 간단 하였다


Unity Pro 에서는 assetbundle 파일을 만들기 및 로드하기가 된다고 한다 (Unity Basic 버전에서는 안된다고 한다 실제 테스트 는 해보진 않았다 ) 


1.스크립트 작성 (AssetBundle Create)



Atlas 가 있는 프로젝트 내부에 위와 같은 스크립트를 넣기만 하면 

유니티 상단의 메뉴 바에  Export 라는 항목이 생길것이다 



2. AssetBundle 생성하기 


그 다음은 프로젝트 뷰에 있는 아틀라스를 선택후 상단의 새로만든 Export메뉴를 눌러서

저장할 위치를 정하고 저장을 누르면 AssetBundle 이 생성된다

이때 중요한건 Atlas는 3가지로 구성되어 있따 GameObject(Prefab), Material, Texture 로 이루어져있는대

AssetBundle을 만드는건 GameObject만 선택한 상태로 만들면된다. 

또한 각각 GameObject , Material, Textture 의 이름은 달라야 한다 . 


예를들어 Atlas_Test_go, Atlas_Text_mat, Atlas_Test_tex, 이런식으로 이름을 다르게 해야 한다 이름이 같으면 잘안된다는대 이는 직접해보진 않고 처음부터 따로 이름을 바꾼뒤 어셋번들을 생성하였기에 이것은 궁금 하신분은 직접 해보도록..


또한 GameObject가 아닌 Material 이나, Texture로만 Assetbundle을 뽑아서 로드 하려고하면 실제 궁극적으로 필요한 Ngui의 UIAtlas 라는 객체가 없어서 필요한 Sprite에 Atlas를 세팅할수 없다.


GameObject 만 AssetBundle 을 생성하여도 AssetBundle 을 뽑는 함수의 옵션 때문인지 하위의 정보들도 같이 합쳐져서 만들어 지는 거 같다. 실제로 해당 파일을 로드할때 디버깅을 하면서 보니 로드된 목록에 Texture 와 Material이 포함되어 있었다.



3. Atlas 를 로드 해보자.





당연 하지만 위 소스 중에 _resourcepath 는 실제 AssetBundle 파일이 있는 장소여야 한다. 해당 경로에서 해당 확장자를 가진 ( 확장자를 .dp로 하였기에 해당 확장자를 긁어 모았다 ) 

읽어 들인뒤 로드하였다 이떄 ab.Load() 함수를 사용하였는대 AllLoad()를 사용하게 되면 해당 파일의 어떤 것들이 담겨져 있는지 보이는대 이를 디버깅으로 까보면 확실히 기억은 안나지만 5~6개의 파일들이 담겨져 있던걸로 기억한다.


하지만 우리가 필요한건 Atlas GameObject 이기에 typeof(GameObject)로 골라내어 로드한후 해당 Gameobjcet 의 UIAtlas  객체를 뽑아내어 Atlas 목록에 넣고 있다. 


4. Load  한 Atlas 적용하기.




이제 우리가 마지막으로 원하는건 로드한 Atlas 를 써먹는거다 .

위와 같은 간단한 소스를 만들어서 Sprite 에 넣어주면 해당 Sprite 가 Awake 될때 

에디터상의 세팅된 AtlasKind에 따라 자기 자신의 Atlas 를  세팅하고 Sprite 이미지 까지 

지정된 이름으로 세팅한다.



 - 잡소리


이러한 Atlas 를 외부에서 로드해서 사용하는 것들은 이미지들이 더 추가될 가능성이 낮고 

또한 실제 이런 이미지들을 사용하는 것들이 런타임 도중 동적으로 이미지가 바뀔 가능성이 

낮은 것들을 위주로 하였기에 ( 또한 아틀라스가 로딩 되기전에 보여지는 이미지가 아닌 것들 )

Awake 함수에서 한번 로드된 아틀라스 로 자기 자신의 아틀라스와 이미지를 세팅하고

끝내는 방식으로 하였다


당연히 아틀라스를 로드 하기전에 보여져야 되는 이미지들은 이런식으로 하면안된다

(로고라던지, 로딩 화면이라던지)


또한 이미지가 런타임 도중 계속 바뀌어야 하는 것들 인벤창의 아이템 이라 던지...

이런 것들은 이미지가 추가될 가능성도 높고 이미지들이 바뀌거나 세팅 되거나 하기전에 가장먼저

Atlas가 세팅되어야 하므로 ( 아틀라스가 세팅되기전의 해당 Sprite의 이미지를 바꾸거나 한다면...

Error가 나던가..? 아마 안나긴 할거다 하지만 아무런 이미지도 보이지 않을거다 ) 

신경써야 되는 부분이 더 생길거 같기도 하고 아이템아이콘 같은경우 사용하는 부분이 너무 많아 그런 여러곳을 전부다 찾아가며 테스트 해보기 귀찮아서 


간단하고 바뀔일 없고 이미지는 커서 용량을 많이 차지하는 것들 로 해당 작업을 하였다.


위의 소스들을 그대로 쓴다면 아마 안될거다(Export스크립트 제외 ) 

그러니 안되는건 레퍼런스를 참조해보도록.... 




출처 : http://chocotart.tistory.com/entry/NGUI-Atlas-Assetbundle-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EB%B0%8F-%EB%A1%9C%EB%93%9C-%ED%95%98%EA%B8%B0

반응형
Posted by blueasa
, |

 

 

[기존 소스에 일부 코드 수정]

CUIListView.cs
0.03MB

 

 

스크롤뷰 아이템을 재사용 할 수 있게 해주는 스크립트 입니다.

인터넷에 이미 몇가지 있는 걸로 알지만, 제가 쓰고 있는 것도 공유해 봅니다.

 

사용법은 간단합니다.

스크립트에 멤버 변수로 CUIListView를 등록하면 다음과 같이 나옵니다. 

 

 

Item List - 스크롤뷰가 포함되어 있는 오브젝트.

Item - 리스트로 출력할 프리팹.

Add Row of Column - 0일 경우 View사이즈에 딱 맞게 아이템을 생성해줍니다. 이렇게 되면 아이템 재사용이 제대로 동작하지 않으니, 1이나 2로 지정합니다.

Item Padding - 아이템 사이의 간격입니다. 알아서 다 맞춰주기 때문에 Grid 사용하지 않아도 됩니다.

Scrollbar - 스크롤바가 있을경우 지정해줍시다.

그리고 UIPanel의 offset과 Center 좌표는 0으로 두는게 좋습니다. 패널 위치를 옮기려면 게임오브젝트의 좌표를 움직이는게 좋습니다.


using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CListViewTest : MonoBehaviour
{
    public CUIListView m_ListView;

    private List m_ItemList = new List();

    void Start ()
    {
        for(int i = 0; i < 500; ++i)
        {
            m_ItemList.Add(i);
        }

        m_ListView.OnUpdateItem = OnUpdateItem;
        m_ListView.OnGetItemCount = OnGetItemCount;

        m_ListView.Init();
    }

    public void OnUpdateItem(int index, GameObject go)
    {
        CListViewTestItem item = go.GetComponent<CListViewTestItem>();
        item.m_Label.text = index.ToString();
    }

    public int OnGetItemCount()
    {
        return m_ItemList.Count;
    }
}

public class CListViewTestItem : MonoBehaviour
{
    public UILabel m_Label;
}

 

코드는 위와같이 작성합니다. 

OnUpdateItem - 아이템이 갱신될 때 호출됩니다. 나머지 부분은 직접 구현하시면 됩니다. 

OnGetItemCount - 리스트의 전체 개수가 필요할 때 호출됩니다.

추가로 Refresh와 Reset, SetFocus 함수가 있는데 필요에 따라서 호출하여 쓰시면 될 것 같습니다.

 

미구현 기능 및 버그

- 스크롤 바를 클릭해서 뷰를 이동하는 기능. 이 기능을 쓸일이 없고 작업하기도 힘들어서 구현하지 않았습니다.

- 아이템이 한페이지 이상 삭제되었을 경우에 Refresh를 호출하면 뷰 이동이 안되는 버그. (이런 경우에는 Reset을 쓰는 걸 추천).

2015. 4. 15 업데이트

아이템이 리스트에 딱 맞게 설정되어 있을 경우에 스크롤이 되는 버그가 있어서 수정하였습니다.

 

2015. 5. 26 업데이트

아이템의 크기가 뷰사이즈 보다 작을 경우 드래그가 불가능 하도록 스크롤뷰를 disable 시키는 기능 추가.

SetFocus(0); 을 호출 할 경우 0번째 아이템이 화면 중앙에 위치하는 버그 수정.

 

출처 : http://kheldon.tistory.com/2

 

반응형
Posted by blueasa
, |

 

참조 : http://blueasa.tistory.com/1777

참조 : http://www.tasharen.com/forum/index.php?topic=10223.0

 

[파일]

Photoshop Overlay.zip
다운로드

 

 

이전에 포토샵의 Overlay와 비슷한 느낌의 Shader가 필요해서 찾아서 올려놨는데 NGUI 패널에서 클리핑이 안돼서

 

수정 및 추가해서 올려 놓음.

 

 

 

반응형
Posted by blueasa
, |

요즘 텔레그램 스티커가 생겼길래

사용자 스티커도 만들수 있는지 알아봤더니
이곳에서 사용자 스티커를 만들수가 있네요


사용법은 간단하네요


추가)
https://telegram.org/blog/stickers <-- 텔레그램에서 스티커 만들어 주면 돈준다네요 ㅋㅋ(100달라)

추가)
헉...
좀더 자세한 설명을 다는 게시판이네요.

사용법을 위 홈피내용과 제가 이미지 올려본 내용을 기준으로 글을 적을게요
1) 스티커로 만들  PNG(512x512 )파일 이미지를 준비를 해요(아마. 최적의 사이즈인듯하네요)
2) 그리고 만들기 버튼을 눌러요
3) 스티커가 만들어지면 하단에 내가 만든 스티커가 올라가네요.
4) 이렇게 스티커가 만들어졌으면, PC용 버전이나 모바일 버전에서 앨범 또는 문서를 통해 스티커를 보낸다.

휴.. 이렇게내요

추가)
저도 뭐 텔레그램 자주이용하는건 아니지만 이모티콘이나 뭐 이런게 넘 부족해서 이렇게 해서라도 사용해보려구요 ;;;




출처 : http://honeycast.kr/bbs/board.php?bo_table=tip&wr_id=326

반응형
Posted by blueasa
, |

텔레그램을 최신버전으로 업데이트 하면 스티커를 추가할 수 있는 기능이 생깁니다.

안드로이드 기준 v2.9.0버전 이상이면 가능합니다.

커스텀 스티커도 가능한데 우선은 추가 스티커 3종 세트를 받을 수 있는 방법을 안내합니다.







위의 세 종류의 스티커가 추가됐습니다.


추가하는 방법은 텔레그램 앱을 업데이트 한 다음에 다음의 링크를 클릭하면 됩니다.


https://telegram.me/addstickers/Animals

https://telegram.me/addstickers/Flags

https://telegram.me/addstickers/Vicky


차례대로 동물, 국가, 비키 스티커입니다.


그리고 루리웹 용자분들이 만든 스티커들

https://telegram.me/addstickers/lovelive

https://telegram.me/addstickers/YuruYuri

https://telegram.me/addstickers/MikuStickers

미리보기는 음슴;;;;;훔훔;;;;;


그리고 더 다양한 커스텀 스티커를 원하시면 스티커 공유하는 페이지를 방문해보세요.


https://www.reddit.com/r/TelegramStickersShare/




출처 : http://comfix.kr/147

반응형
Posted by blueasa
, |


Link : http://forum.unity3d.com/threads/visual-studio-code.322396/


Link : https://code.visualstudio.com/

반응형
Posted by blueasa
, |

안드로이드에서 사운드 지연 문제 이슈와 해결 방법으로 올라와 있어서 링크 해 놓음..



참조1 : http://www.gamecodi.com/board/zboard.php?id=GAMECODI_Talkdev&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=3294


참조2 : http://tsubakit1.hateblo.jp/entry/2015/05/19/011835




If you're developing mobile games for Android, you've probably noticed ridiculous sound delay on some devices. 
No more. With this plugin, your sounds will play almost immediately. Check out this demo video:


Features:

- Play in-game sounds without any delay on Android devices
- Simultaneous playback of several sounds
- All kinds of Android built-in audio file formats are supported
- Plugin uses Android Sound Pool for managing and using sound files
- Doesn't conflict with Unity sound system

It works by issuing direct calls to the Android OS, bypassing everything that Unity has in its audio system. It means that sounds won't be affected by distance, Doppler, project volume settings etc, which is perfectly acceptable for most of the Android games. In our game, music is played by Unity and short sounds are managed by this plugin, with no issues. 

Usage is simple: 
- Send filename of sound and get its ID's with AudioCenter.loadSound(path_to_file) method
- Play it with AudioCenter.playSound(sound_id) method
- Unload it with AudioCenter.unloadSound(sound_id) method to save memory
For more detailed instructions, refer to the .pdf, supplied with the plugin.

Download it directly from our website: http://catsknead.me/static/plugin.zip

In the archive you'll find .unitypackage, .pdf with detailed instructions, .java file, containing full source of the Android-side of the plugin and a test scene, in which you can compare two playback methods. 
If you see no sound delay in the provided example scene - you probably have a lucky device, try another one :)

Coming to the Asset Store soon.



출처 : http://forum.unity3d.com/threads/android-sound-latency-fix.319943/

반응형

'Unity3D > Tips' 카테고리의 다른 글

Android Manifest File  (0) 2015.08.25
Unity Editor command line arguments  (0) 2015.08.12
iOS Native 관련..  (0) 2015.05.12
Scene뷰에서 Handles.Label()  (0) 2015.05.08
[링크] 유니티5 업그레이드 가이드  (0) 2015.03.30
Posted by blueasa
, |

[폰트 다운로드] http://www.google.com/get/noto/#/

Adobe는 Google과의 협력을 통해 새로운 오픈 소스 한중일 통합 서체 모음인 본고딕(Source Han Sans)을 출시하게 되었습니다. 이 서체 모음은 데스크탑용 Typekit을 통해 다운로드할 수 있습니다. Typekit 계정이 없는 경우 계정을 만들어 Adobe의 무료 구독을 통해 바로 사용할 수 있습니다. 원본 소스 파일에 관심이 있는 사용자는 GitHub의 다운로드 페이지에서 소스 파일을 다운로드할 수 있습니다.

7가지 굵기로 제공되는 본고딕은 하나의 서체를 통해 한국어, 일본어, 중국어 번체 및 중국어 간체를 모두 지원합니다.  또한 널리 사용되는 Source Sans 서체 모음의 라틴어, 그리스어 및 키릴 자모 글리프가 포함되어 있습니다. 앞에서 언급한 바와 같이 이 서체 모음 각각의 굵기에는 총 65,535개의 글리프(OpenType 포맷으로 지원되는 최대 글리프 수)가 포함되어 있고 전체 서체 모음에는 약 총 50만 개의 글리프가 포함되어 있습니다.지금까지 이러한 규모와 개발 범위 및 가치를 지닌 서체 모음이 오픈 소스로 제공된 적이 없었습니다. 즉, 다양한 언어 세트를 지원하는 서체를 필요로 하는 디자이너, 개발자 및 일반 사용자에게 무료로 제공됩니다. Adobe는 디지털 경험을 혁신해 나가고 있으며 본고딕의 출시는 사회 환원이라는 Adobe의 비전을 한 단계 발전시키는 또 다른 사례입니다.

multi-language-sample-v3

이러한 작업은 모든 서체 개발업체에게 엄청난 부담으로 여겨집니다. 주요 협력업체로 Google이 없었다면 성공적으로 완수하지 못했을 것입니다. Google 서체 개발 팀과의 첫 번째 만남은 방대한 동아시아 언어를 포괄하는 오픈 소스 서체 개발의 필요성을 절감했던 때인 3년 전으로 거슬러 올라갑니다. Google 서체 개발 팀은 Adobe에 먼저 접촉했으며, 그 당시 Adobe는 자체 오픈 소스 서체 모음 개발 작업을 막 착수하고 있었습니다. Adobe와 Google은 서로에게 힘이 되는 상호 보완적인 관계로 이어졌습니다. Google은 프로젝트 방향에 대한 많은 의견을 내놓았으며 요구 사항을 정의하는 데 도움을 주었을 뿐만 아니라 국내의 테스트 리소스와 전문 기술력을 제공하였으며 무엇보다도 성공적인 프로젝트 수행을 위해 자금 지원을 아끼지 않았습니다. 한편, Adobe는 국내의 검증된 서체 디자인 경험과 막강한 조직력 그리고 자동화와 더불어 강력한 디자인과 전문적인 기술력을 제공했습니다.

도쿄 지사 서체 팀의 수석 디자이너인 Ryoko Nishizuka는 새로운 서체 모음의 디자인을 총괄 지휘했습니다. 주요 요구 사항은 까다로웠습니다. 이 서체 모음은 위에서 언급한 광범위한 언어 세트를 포괄하고 이러한 언어를 사용하는 지역의 지역적 글리프 차이를 지원해야 했습니다. 일부의 경우 원래 중국 상형문자를 기반으로 한 글리프는 최대 4개의 지역적 차이가 존재했습니다. 또한 이 서체는 특별히 인쇄용으로 완벽하게 표시되고 현재 시중에 출시되어 있는 많은 태블릿과 모바일 디바이스의 다양한 화면에서도 아무 문제 없이 표시되는 것이 중요했습니다. 마지막으로 Adobe는 라틴어 글리프용 Source Sans를 포함할 계획이었고 Google은 자사의 Roboto 및 Noto Sans 서체의 글꼴과 잘 어울리는 서체를 필요로 했습니다. Google은 이 서체의 자체 버전을 제공하고 있기에 새로운 디자인은 이 두 회사의 요구 사항을 모두 충족해야 했습니다. Google의 Noto Sans 한중일 서체 모음에 대한 자세한 내용은 Google 블로그에서 확인할 수 있습니다.

Ryoko가 만든 간소화된 획과 일관된 획 두께로 표현되는 현대적 스타일 디자인의 서체를 통해 태블릿 및 스마트폰과 같은 작은 화면 크기의 디바이스에서도 텍스트를 보다 쉽게 읽을 수 있습니다. 서체가 간소화되었음에도 불구하고 전통적인 Sans Serif 서체 디자인 본연의 우아함을 대부분 그대로 유지하고 있으므로 한 줄 또는 짧은 구절로 된 소프트웨어 메뉴 텍스트뿐만 아니라 장문의 eBook 텍스트에 대해서도 높은 가독성을 제공합니다.

료코 니시주카가 만든 초안입니다.

료코 니시주카가 만든 초안입니다.

한자의 초안입니다.

한자의 초안입니다.

서체 디자이너, 료코 니시주카가 본고딕 (Source Han Sans)의 일부 글자를 제작하였습니다.

서체 디자이너, 료코 니시주카가 본고딕 (Source Han Sans)의 일부 글자를 제작하였습니다.

Ryoko가 서체 디자인을 작업하는 사이 우리는 진정한 의미의 성공적인 한중일 통합 서체를 개발하기 위해서는 수년간의 국내 디자인 경험을 쌓은 서체 개발업체만의 전문 기술력이 필요하다는 점을 인지하고 있었습니다. 따라서 일본어 글리프 선택폭을 넓히기 위해 Iwata와 협력 관계를 체결했고 한국의 경우 한국어 문자인 한글을 디자인한 Sandoll Communication과 중국의 경우 오랜 협력업체인 Changzhou Sinotype과 협력 관계를 체결했습니다. 이렇게 하여 이 프로젝트는 5개 업체 간의 공동 작업 형태의 프로젝트로 발전하였으며 서체 디자인 업계에서는 찾아보기 매우 드문 기획이었습니다.

이러한 전문 기술력을 이용하는 것이 왜 중요할까요? 동아시아 각국의 표기 체계는 시간이 지나면서 서로 다른 방향으로 발전했으며, 중국에서 유래한 한자 역시 지역적 변형을 거쳤습니다. 일부 한자는 여전히 처음 그대로 남아있어 이들 국가에서 공통으로 사용되고 있지만 나머지는 지역적 차이를 반영한 다른 형태로 변모했습니다. 이러한 지역적 차이는 아래 명시된 글리프에서 확인할 수 있습니다. 특히 서양인의 눈에는 이러한 지역적 차이가 미세하게 보일 수 있지만 한중일 사용자들에게는 매우 중요합니다.

한자 U+9AA8 (“뼈”), 좌에서 우로 : 중국어 간체, 중국어 번체, 한국어/일본어 (공통)

한자 U+9AA8 (“뼈”), 좌에서 우로 : 중국어 간체, 중국어 번체, 한국어/일본어 (공통)

한자 U+66DC. 좌에서 우로 : 중국어 간체, 중국어 번체, 일본어, 한국어

한자 U+66DC. 좌에서 우로 : 중국어 간체, 중국어 번체, 일본어, 한국어

마지막으로 이 모두를 취합할 수 있는 전문 인력이 필요했는데 이러한 업무를 Dr. Ken Lunde가 담당했습니다. Ken은 세계적으로 유명한 Adobe의 한중일베트남 서체 전문가로서 이 서체의 글리프 세트 및 유니코드 매핑 사양, 협력업체 간의 의사 소통과 이들 협력업체 글리프 컨텐츠의 통합, 최종 서체 리소스 제작을 총괄 지휘했습니다. Google과의 커뮤니케이션에서 주요 연락책 역할도 담당한 Ken은 디자인을 검토하고, 중간 릴리스를 전달하고, 서체 모음 테스트를 감독하는 데 많은 시간을 할애했습니다. Adobe가 25주년 창립 기념을 맞이하여 101번째 Adobe 오리지널 서체인 본고딕을 출시할 수 있게 된 데에는 Ken의 노력이 큰 뒷받침이 되었습니다.

본고딕(Source Han Sans) 다운로드

본고딕은 ExtraLight, Light, Normal, Regular, Medium, Bold 및 Heavy의 7가지 굵기로 제공됩니다. 이 서체는 모든 Typekit 플랜레벨(무료레벨포함)을 통 해데스크탑용으로 다운로드할 수 있으며 모든 데스크탑 애플리케이션에서 사용할 수 있도록 동기화할 수 있습니다. 아직까지 데스크탑 서체 동기화  기능을 사용해 보지 못했더라도 걱정하지 마십시오. 매우간단합니다. Greg Veen이 진행하는 사용 방법 데모 영상에서 확인할 수 있습니다. Typekit을 사용하여 서체를 동기화하는 방법에 대한 자세한 정보는 중국어 간체,중국어 번체, 일본어 및 한국어로 제공됩니다.

본고딕은 Apache 2.0 라이선스에 의거하여 제공됩니다. 전체 다국어 서체 모음, 개별 언어 하위 세트 및 원본 소스 버전은 GitHub에서 다운로드 할 수 있습니다. Google은 Noto 통합유니코드 서체 모음의 일부로 Noto Sans CJK라는 이름으로 이 서체의 자체버전을 출시할 예정입니다.

Note: We have updated some links in this post for clarity; Adobe open source projects are hosted on GitHub, but no longer on SourceForge. (10/23/2014)


출처 : http://blog.typekit.com/alternate/source-han-sans-kor/

반응형
Posted by blueasa
, |

NGUI를 이용해서 UI 제작을 하면서 UI 디자이너에게서 리소스와 배치 데이터를 받아서 작업을 하는 데,


유니티 특성상 UI는 트리노드 구조를 가져서 특정 UI의 좌표가 어떤지 알기가 힘들어서 쉽게 보기 위해 대충 만들어 봤다.


당장 그냥 쓰기 위해 위치나 색깔등 대충해서 만들기..


따로 넣기도 귀찮아서 그냥 NGUI 소스인 UIWidget.cs에 추가 했다.


P.s. UI디자이너가 포토샵을 보통 쓰기때문에 NGUI가 데카르트 좌표계를 쓰고 있지만 UI디자이너가 주는 정보와 매칭되게 하기 위해서 스크린좌표계로 변환해서 보여주도록 했음.



public class UIWidget : UIRect
{
    ....
    void OnDrawGizmos ()
    {
        .....
#if UNITY_EDITOR
        // 아래 추가한 함수를 여기서 실행.
            ShowSelectedUICoordinate();
#endif // UNITY_EDITOR
    }

#if UNITY_EDITOR  // 에디터에서만 실행하도록..
    /// 
    /// 선택된 UI의 좌표(X/Y/Width/Height) 보여주는 함수.
    /// 좌표계는 스크린좌표계 기준.
    /// 

void ShowSelectedUICoordinate() { // by blueasa if (UnityEditor.Selection.activeGameObject == gameObject) { // 타겟 해상도(1280x720) 자신이 원하는 해상도에 맞게 변경. float fScreenWidth = 1280f; float fScreenHeight = 720f; Camera cUICamera = UICamera.mainCamera; if (null == cUICamera) { UnityEngine.Debug.LogWarning("Can't find UICamera.."); return; } GUIStyle style = new GUIStyle(); style.normal.textColor = Color.yellow; // UI는 데카르트 좌표계이므로 스크린 좌표계로 변환해서 사용. // X/Y를 Widget 중심으로 사용하기로 해서 수정. 좌측상단 사용하려면 선택하면 될 듯.. #region X/Y Widget 중심(스크린 좌표계) //float fX = cUICamera.WorldToViewportPoint(worldCenter).x * fScreenWidth; //float fY = (1f - cUICamera.WorldToViewportPoint(worldCenter).y) * fScreenHeight; //// X/Y가 Widget의 중심이기때문에 크기가 1/2만 나오므로 원래크기를 만들기 위해 2를 곱함. //float fWidth = ((cUICamera.WorldToViewportPoint(worldCorners[3]).x * fScreenWidth) - fX) * 2f; //float fHeight = (((1f - cUICamera.WorldToViewportPoint(worldCorners[3]).y) * fScreenHeight) - fY) * 2f; #endregion #region X/Y Widget 중심(데카르트 좌표계) float fX = cUICamera.WorldToViewportPoint(worldCenter).x * fScreenWidth; float fY = cUICamera.WorldToViewportPoint(worldCenter).y * fScreenHeight; // X/Y가 Widget의 중심이기때문에 크기가 1/2만 나오므로 원래크기를 만들기 위해 2를 곱함. float fWidth = ((cUICamera.WorldToViewportPoint(worldCorners[2]).x * fScreenWidth) - fX) * 2f; float fHeight = ((cUICamera.WorldToViewportPoint(worldCorners[2]).y * fScreenHeight) - fY) * 2f; #endregion #region X/Y 좌측상단(스크린 좌표계) //float fX = cUICamera.WorldToViewportPoint(worldCorners[1]).x * fScreenWidth; //float fY = (1f - cUICamera.WorldToViewportPoint(worldCorners[1]).y) * fScreenHeight; //float fWidth = (cUICamera.WorldToViewportPoint(worldCorners[3]).x * fScreenWidth) - fX; //float fHeight = ((1f - cUICamera.WorldToViewportPoint(worldCorners[3]).y) * fScreenHeight) - fY; #endregion string strXYWH = string.Format("[X] {0:0.00}, [Y] {1:0.00} [W] {2:0.00}, [H] {3:0.00}", fX, fY, fWidth, fHeight); UnityEditor.Handles.Label(transform.position, strXYWH, style); // 참고.. //Debug.Log("worldCorners[0] " + camera.WorldToViewportPoint(worldCorners[0])); // 좌하(↙) //Debug.Log("worldCorners[1] " + camera.WorldToViewportPoint(worldCorners[1])); // 좌상(↖) //Debug.Log("worldCorners[2] " + camera.WorldToViewportPoint(worldCorners[2])); // 우상(↗) //Debug.Log("worldCorners[3] " + camera.WorldToViewportPoint(worldCorners[3])); // 우하(↘) } } #endif // UNITY_EDITOR }



출처 : Mine


반응형
Posted by blueasa
, |