2016. 2. 22. 06:16


*UI  관련
1.ActionbarSherlock (http://actionbarsherlock.com/)
- 액션바를 하위 버전의 안드로이드에도 적용하기 위해 너무나도 필수적인 말이 필요없는 라이브러리. 심지어 구글에서도 많이 사용하고 있조?

2. HoloEveryWhere (https://github.com/Prototik/HoloEverywhere)
- ActionbarSherlock 이 업데이트 되면서 액션바와 관련없는 기능은 처내고 있더군요. 액션바외에 버튼이나 다른 위젯들에서 Holo 스타일을 사용하고 싶으시다면 꼭 필요한 녀석입니다.

3. Android-PullToRefresh (https://github.com/chrisbanes/Android-PullToRefresh)
-왠만한 앱에는 필수적으로 적용되는 PullToRefresh... 다양한 라이브러리가 있지만 이녀석이 가장 잘! 동작하더군요. 한가지 아쉬운 점은 파운더 분이 더이상 개발을 진행하지 앟는거? 그래도 지금 버전으로도 큰 문제없이 잘 사용하고 있습니다.

4. PinterestLikeAdpaterView (https://github.com/huewu/PinterestLikeAdapterView)
-멀티컬럼 리스트 뷰를 구현한 자작! 라이브러리입니다. 여러가지로 빠진 기능과 자잘한 버그가 있긴자미나 그래도 비교적;;; 잘 동작합니다. 이외로 중화권 개발자들이 많이 가져다 활용하고 있더군요;;;

5. StickGridHeaders (https://github.com/TonicArtos/StickyGridHeaders)
-안드로이드 기본 GridView 는 HeaderView 를 지원하지 않지요. 직접 만들뻔;;; 했으나 GDG 여러분들의 도움으로 알게되서 잘 활용하고 있습니다. 메이저한 라이브러리가 아니라 문서화가 잘 되어있진 않지만 사용하는데 큰 어려움은 없더군요. 단순히 HeaderView 를 추가하는것 뿐만아니라 말 그대로 Stick 한 HeaderView 도 잘 지원합니다.

6. SlidingMenu (https://github.com/jfeinstein10/SlidingMenu)
-최근 1년새 대세로 떠오른 왼쪽 혹은 오른쪽에서 미끄러져 나타나는 메뉴를 구현한 라이브러리 중 가장 훌륭한 성능을 내는 소중한 라이브러리입니다만, 최근 정의된 안드로이드 가이드라인과 맞지 않는 부분이 있어서(기본적으로 컨텐츠 화면은 움직이지 않고 고정되어야하는게 가이드라인이더군요) 아쉽지만 이제 걷어내야할 때가 온거 같습니다.

*다른 서비스와 연동
1. FacebookSDK (https://developers.facebook.com/android/)
-Facebook 로그인 정도는 다 해야조? 여러가지로 말이 많던 라이브러리지만 버전업 되면서 많이 좋아졌습니다.

2. Twitter4J (http://twitter4j.org/ko/index.html)
-아직 구현되어있진 않지만, 트위터 로그인도 지원 예정입니다.
 
3. AndroidPusher (https://github.com/EmoryM/Android_Pusher)
-앱 실행 중에는 빠르게 Push 메세지를 받기위하여 Pusher 서비스를 사용하고 있습니다. Pusher 를 사용하기 위한 클라이언트 라이브러리 입니다.

4. CloudinaryAndroid (https://github.com/cloudinary/cloudinary_android)
-이미지에 특화된 CDN 서비스를 제공하는 cloudinary 서비스를 사용하기 위한 클라이언트 라이브러리 입니다.

5. YouTubeAndroidPlayer (https://developers.google.com/youtube/android/player/)
-앱 내에서 바로 유투브 동영상을 재생하기 위해 사용하고 있습니다.

6. libGoogleAnalyticsV2 (https://developers.google.com/analytics/devguides/collection/android/v2/)
-유저들이 빙글 앱을 어떻게 사용하고 있는지, 어떤 부분을 개선해야하는지 확인하기 위해 적극 활용하고 있습니다. 무료로 사용할 수 있으니 아직 활용해보지 않은 분들은 Google Analytics 를 꼭 한번 고려해보세요.

*그외
1. Square Otto (https://github.com/square/otto)
-사용자 입력으로 인해 다양한 Fragment / View 로 이벤트가 전달되어야 할때, 혹은 서버측 데이터가 변경되서 어플리케이션의 다양한 부분이 동시에 변경되어야 할 때...  일일히 Listener 로 처리하자면 끝이 없습니다. 중앙집중적으로 깔끔하게 각종 이벤트를 처리할 수 있도록 도와주는 EventBus 라이브러리입니다. 믿고 쓰는 Square Quality!

2. Square OkHttp (https://github.com/square/okhttp)
-기존 HttpURLConnection 을 대체해서 사용할 수 있는 유용한 라이브러입니다. Connection Pool 과 Cache 가 자동 지원! 거기에 SPDY 프로토콜까지 지원!! (아쉽지만 적용에 문제가 생겨서 꺼둔 상태이긴 합니다만…) 믿고 쓰는 Square Quality!

3. Volley (https://android.googlesource.com/platform/frameworks/volley)
-구글 플레이 앱에서 사용되고 있는 구글이 만든 네트워크 라이브러리! 여러 REST API 콜을 동시에 처리하는등의 작업을 수행할 때 기존 어떤 라이브러리보다 더 좋은 성능을 보인다고 구글이 자신있게 권장하고 있습니다!

4. AndroidUniversalImageLoader (https://github.com/nostra13/Android-Universal-Image-Loader)
-엄청나게 다양한 ImageLoader 라이브러리 중에 결국 빙글이 선택한건 바로 이 녀석. 상당히 다양한 앱에서 이미 사용되고 있기도 하고, 개발자가 다양한 옵션을 쉽게 설정할 수 있습니다. 성능도 만족스럽구요. 단, Volley 를 적용하면서 두 녀석을 어떻게 통합해야 하나 하고 고민중입니다.

5. GSON (https://code.google.com/p/google-gson/)
-구글이 만든 Json 라이브러리. 쓰기 쉽고 간결합니다! Json 을 처리하는 모든 분게 강추!

Posted by 시리시안
2016. 2. 22. 05:58
  1. 파일

    /**

    @file main.cpp

    @date 2009/04/25

    @author 홍길동(hong@aaa.com)

    @brief 프로그램의 구동

    */

     

  2. 클래스

    해당 클래스 선언부 위에 위치한다.

    /**

    @class main.cpp

    @date 2009/04/25

    @author 홍길동(hong@aaa.com)

    @brief 프로그램의 구동

    @warning 주의 사항이 있으면 이 곳에 입력한다.

    */

     

  3. 함수 설명

    해당 함수 위에 위치한다.

    /**

    @return char * : 이름

    @param strPersonNum : 주민등록번호

    @brief 해당 주민등록번호의 이름을 가져온다

    @warning 주민등록번호는 - 없이 입력한다.

    */

     

  4.  간략설명

     해당 라인의 뒤에 위치한다.

    unsigned logn nAssetIP;     ///< 자산 아이피

    또는

    unsigned logn nAssetIP;     /**< 자산 아이피 */

     

  5. 주석 내 사용되는 item 들

     @breif        간략한 설명을 쓴다.
     @remarks   자세한 설명을 쓴다.
     @file          파일 이름을 구별할때.
     @return      함수의 리턴값 나타낼때.
     @author     작성자 이름을 나타낼때
     @date        작성날짜를 나타낼때.
     @param      함수 파라메터를 나타낼때
     @see         참고할 함수나 페이지를 지정한다.
     @todo        해야할일들에 대한 기술, 전체 항목의 @todo에 대한 리스트가 생성됩니다
     @bug         버그에 대한 기술, 전체 항목의 @bug에 대해서 따로 리스트가 생성됩니다.
     @code       중요 코드를 설명할때 시작 지점 가리킨다.
     @endcode  중요 코드 설명할때 종료 지점 가리킨다.
     @exeception exception처리에 대한 설명
     @mainpage
     @section

     @throw: throw하는 객체나 변수등에 대한 설명


Posted by 시리시안
2016. 2. 22. 05:56

Doxygen은 C, C++. C#, Objective-C, PHP, Java,Python, VHDL, Fortran, Tcl 등의 소스코드에서 주석을 약속된 문법대로 작성하면 주석을 분석해서 HTML 또는 LATEX, PDF 형태로 소스코드를 문서화 해줍니다.

 따라서  Doxygen 을 사용하시면 소스코드의 분석 및 유지 보수에도 도움이 됩니다. 

 

우선 Doxygen 설치에 앞서 함수 구조도, 클래스 구조도등의 그래프를 무선에 포함시키기 위하여 Graphviz 를 설치하는게 좋습니다.

Graphviz은 http://www.graphviz.org/Download_windows.php 에서 받아 설치하면 됩니다.

 

다음으로 http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc 에서 OS에 맞는 Doxygen을 다운받아 설치합니다. 

 

Doxygen의 주석은 /**  */ 모양의 주석 안에 약속된 형태의 태그를 명시하고 그에대한 설명을 추가하는 형식으로 되어 있습니다. 문법에 대한 설명과 팁들을 보려면 공식 홈페이지 매뉴얼http://www.stack.nl/~dimitri/doxygen/manual.html 을 참고하시기 바랍니다.

  

다음 설명은 doxygen 1.8.2 버전을 기준으로 설명합니다. 

 

Doxygen-1.8.2 를 설치 후에 Doxywizard를 실행하시면 다음과 같은 화면이 뜹니다. 

 

 

 



 

[ Wizard >> Project ]

 

Specify the working directory from which doxygen will run 

프로젝트 루트 폴더를 지정합니다.  이 폴더 안에 소스코드와 Doxygen 결과가 저장될 폴더등이 이안에 있어야 합니다.

 

Project name
프로젝트 이름을 넣습니다.

 

Project verion or id
프로젝트 버전이나 다른 프로젝트와 구별할 수 있는 식별 번호를 입력합니다. 정해진 형식은 없으며 자유롭게 입력하시면 됩니다.

 

Source code directory
소스 파일이 있는 디렉토리를 지정해 줍니다.

 

Scan recursively
소스 파일이 소스 디렉토리 안에 또 다른 디렉토리 안에 작성되어 있다면, 모든 하위 디렉토리까지 뒤져가면서 문서를 작성할지의 여부를 지정합니다.

 

Destination diectory
Doxygen이 문서를 어디에 생성할지를 정해 줍니다. 이 디렉토리 및에 자동으로 “html”디렉토리를 생성하므로 Doxygen을 위한 디렉토리만 정해주시면 됩니다.


 

 


 

[ Wizard >> Mode ]

 

Include cross-refeenced source code in the output
이 옵션을 체크하면 각 함수마다 사용한 함수 코드로 바로 Jump할 수 있는 링크를 생성해 줍니다. 

 

Select progrmming language to optimize the results for

해당 프로그램 언어를 선택하시면 됩니다. 

 

 

 



 

[ Wizard >> Output ]

 

with navigation panel

출력 형식을 선언하는 것이며 문서 왼쪽에 탐색 트리가 있는 것이 편하므로 “with navigation panel”에 체크를 했습니다.

 

 

 



 

[ Wizard >> Diagrams ]

 

Use dot tool from the GraphViz package

 Doxygen에서 소스간의 관계를 그래프로 출력해 주는 기능이 있습니다. 그래프로 출력해주는 기능을 Dot Tool 이라고 하더군요. 당연히 관계 그래프가 출력되는 것이 좋으므로 모든 옵션을 체크했습니다

 

 

 



 

[ Expert >> Project ]

 

DOXYFILE_ENCODING

한글사용시 한글이 깨지는 것을 막기 위해 “EUC-KR”로 변경합니다.

 

OUTPUT_LANGUAGE

출력 결과에 쓰여질 언어를 선택합니다.

 

ALWAYS_DETAILED_SEC

항상 상세정보를 보여줍니다. REPEAT_BRIEF와 같이 선택하게되면 개략 정보가 없어도 상세정보 영역을 생성하게 됩니다.

 

INLINE_INHERITED_MEMB

생성자와 소멸자를 제외한 상속된 모든 멤버들을 보여줍니다.

 

 

 



 

[ Expert >> Build ]

 

EXTRACT_ALL

이 항목을 체크 하시면 소스코드 내의 모든 요소가 문서화 대상이 됩니다.

하지만 EXTRACT_PRIVATE EXTRACT_STATIC에 체크돼 있지 않으면 private 멤버와 static 멤버는 문서화 되지 않습니다.

 

EXTRACT_PRIVATE

이 항목을 체크 하시면 클래스내의 모든 private 멤버가 문서화 대상이 됩니다.

 

EXTRACT_STATIC

이 항목을 체크 하시면 클래스내의 모든 static 멤버가 문서화 대상이 됩니다.

 

 

 



 

[ Expert >> Input ]

 

INPUT_ENCODING
한글이 깨지는 문제를 피하기 위해 “EUC-KR”로 변경합니다.

 

 

 



 

[ Expert >> Source Browser ]

 

INLINE_SOURCES 

이 항목을 체크 하시면 함수 설명에서 함수 소스코드가 들어가게 됩니다.

 

 

 



 

[ Expert >> Dot ]

 

ClASS_DIAGRAMS

클래스의 상속구조 다이어그램으로 그립니다.

 

UML_LOOK

다이어그램을 UML 형식으로 그립니다.

 

 

 



 

Run ]

 

Run doxygen

이 버튼을 클릭하시면 Doxygen 문서가 생성됩니다.

 

Show HTML output

Doxygen has finished 가 되었다면 이버튼을 통해 HTML을 볼수 있습니다.

이미 새성된 HTML은 Destinatione diectory 로 지정한 디렉토리 밑에 “html” 디렉토리가 있으며, 그안의 "index.html" 을 이용하여 HTML을 보셔도 됩니다.

 

 

이 설정 내용은 Doxygen 메뉴의 File >> Save 를 통해 저장하시면 소스 코드 변경후에 File >> Open 을 통하여 설정내용을 불러와서 그대로 다시 문서를 생성할수 있습니다.

 

이상 Doxygen 설정 방법 및 문서생성에 관한 글을 마치도록 하겠습니다.

Posted by 시리시안
2016. 2. 22. 05:54

http://www.jsoneditoronline.org/


좌측에 제이슨 코드를 복사한후 중앙에 화살표 키를 누르면 다음과 같이 정렬되서 편하게 볼수있습니다.



Posted by 시리시안
2016. 2. 22. 05:54

유니티에서 사운드 재생 하기 위해 만든 매니저입니다.


간단한 사운드부터 거리설정 및 포지션 설정 사운드까지 지원합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class SoundManager : MonoBehaviour
{
 
    public AudioClip[] BGMSounds;
    public AudioClip[] EffectSounds;
 
    public bool isSfxMute = false;
    [Range(0.0f, 1.0f)]
    public float sfxVolume = 1.0f;
 
    public Vector3 SoundPlayPosition;
 
    float DefaultMinDistance = 10.0f;
    float DefaultMaxDistance = 30.0f;
    public void SimplePlayBGM(int Index)
    {
        PlaySfx(BGMSounds[Index]);
    }
    public void SimplePlayEffect(int Index)
    {
        PlaySfx(EffectSounds[Index]);
    }
    public void PlaySfx(AudioClip sfx, Vector3 _pos, float _MinDistance, float _MaxDistance, float _Volume)
    {
        if (isSfxMute) return;
 
        GameObject SoundPlayObject = new GameObject("Sfx_" + sfx.name);
        SoundPlayObject.transform.position = _pos;
 
        AudioSource _AudioSource = SoundPlayObject.AddComponent<AudioSource>();
        _AudioSource.clip = sfx;
        _AudioSource.minDistance = _MinDistance;
        _AudioSource.maxDistance = _MaxDistance;
        _AudioSource.volume = sfxVolume;
 
        _AudioSource.Play();
 
        Destroy(SoundPlayObject, sfx.length);
    }
    public void PlaySfx(AudioClip sfx)
    {
        PlaySfx(sfx,SoundPlayPosition, DefaultMinDistance, DefaultMaxDistance, sfxVolume);
    }
    public void PlaySfx(AudioClip sfx, float _MinDistance, float _MaxDistance)
    {
        PlaySfx(sfx,SoundPlayPosition, _MinDistance, _MaxDistance, sfxVolume);
    }
    public void PlaySfx(AudioClip sfx, Vector3 _pos)
    {
        PlaySfx(sfx, _pos, DefaultMinDistance, DefaultMaxDistance, sfxVolume);
    }
    public void PlaySfx(AudioClip sfx, Vector3 _pos, float _MinDistance, float _MaxDistance)
    {
        PlaySfx(sfx, _pos, _MinDistance, _MaxDistance, sfxVolume);
    }
    public void PlaySfx(AudioClip sfx, Vector3 _pos, float sfxVolume)
    {
        PlaySfx(sfx, _pos, DefaultMinDistance, DefaultMaxDistance, sfxVolume);
    }
}
cs


Posted by 시리시안
2016. 2. 22. 05:53

첨부 파일에 패키지 드립니다.

제가 만든게 아니고, 외국 사이트에서 받은건데..

출처를 알게되면 바로 수정하겠습니다.


spine-unity.unitypackage



Posted by 시리시안
2016. 2. 22. 05:51



저번글에 이어서 봅시다.
이번 글에서는 스파인 좌측 기능에 대해서 볼껍니다.
SkeletonAnimation를 보면 여러 기능을 가지고있네요.
차례대로
스킨, 레이어,어드밴스안에 메시기능과
Z축 거리 노말 연산, 등..
그리고 애니메이션과 루프 타임스케일이 있네요.

위에서부터 봅시다.

스킨은 말그대로 스파인 디자이너가 넣어준 스킨을 교체합니다.
레이어는.. 굳이 설명 안해도 될꺼같네요

어드밴스 부분을 봅시다.
서브매시를 다루는 부분과
Z Spacing이 있네요

먼저 서브메시를 다루는건.. 음.. 내용이 좀 길어 질테니
로 대신합니다.

영상을 그대로 보시고 따라하시면 손쉽게 익히실수 있습니다.

그다음 Z Spacing을 봅시다.
3D뷰로 바꾸고 숫자를 조절하면 바로 알수있을꺼애요




이처럼 2D공간내에서 벌어지게 됩니다.
사용법은.. 서브메시를 이용할때 사용하셔도되고,
일부만 들어가는 파티클 작업이나, 라이트 작업에 사용하셔도됩니다.

그외 노말 과 탄젠트 계산법은 생략할게요.

애니메이션 네임과 루프와 타임스케일은 전부 아실꺼라 생각합니다~


Posted by 시리시안
2016. 2. 22. 05:48
안녕하세요.
먼저 
에서 스파인 SDK를 받습니다.




유니티에 사용하시는거라면 spine-csharp과 spine-unity 2개를 받으면 됩니다.
귀찮으니 그냥 오른쪽 Download ZIP을 눌러서 전부 다운 받읍시다 (22M정도)

그래서 위 2개 폴더를 유니티에 넣어줍시다.







유니티는 스파인파일을 텍스트 파일로 읽기 때문에 .txt로 변경해주어야 합니다.
(아트가 Spine을 잘 다룬다면, .txt로 익스포트시 변경하여 뽑을수도있답니다.)


그다음 Material을 만들고 이미지를 넣어야..하는데..
자동으로 만들어지네요..?
보면 atlas.asset도 자동으로 만들어 집니다........
원래는.. 스파인 아틀라스를 만들고 데이터를 짚어 넣어야 하지만, 자동으로 만들어지니 생략하겠습니다.






아니 다시보니까 
스파인 스켈레톤데이터는 자동으로 안만들어주네요!!?
왜 2개는 자동으로 만들어주고 제일 중요한 파일은 자동이 아닌지..ㅇㅅㅇ;
... 일단 만듭시다.




만든 거기에 atlas 에셋 데이터와 json.txt파일을 넣어줍시다!







Hierarchy에서 SpineSkeletonAnimaion을 만들어줍니다.




그안에 아까 만든 스켈레톤데이터를 넣어줍시다.

그러고 씬을 보면.. 쨔쟌! 벌써 스파인 캐릭터가 등장했네요!!

와..
정말 간단해졌네요 -ㅅ-;


Posted by 시리시안
2016. 2. 22. 05:47


//특정 축 Director
//각도 Dgree = 90.0f
//기준 Space.World
 
//글로벌 기준 회전
transform.Rotate(Director, Dgree, Space.World);
 
//로컬 기준 회전
transform.Rotate(Director, Dgree, Space.Self);
 
//기본적으로 Space.Self 이기 때문에 아무것도 안적어도 됩니다.


Posted by 시리시안
2016. 2. 22. 05:46
1
2
3
4
5
6
7
8
9
10
11
12
private UnityEngine.EventSystems.EventSystem _eventSystem;
 
void Start () {
    _eventSystem = GameObject.Find("EventSystem").GetComponent<UnityEngine.EventSystems.EventSystem>();
}
void OnMouseOver () {
    if(_eventSystem.IsPointerOverEventSystemObject()) {
    // we're over a UI element... peace out
    return;
   }
}
 
cs


Posted by 시리시안