기본 Dropdown Object를 z축 방향으로 돌려 사용

Arrow 방향을 맞춰주면 예쁨

옵션에 이름을 넣어도 되고 안넣어도 되고 나는 안넣음(넣으면 텍스트 작업을 또 해야해서 귀찮아서라고는 안했다)

그러고 넣을 사진들을 막 넣고

나는 드롭박스 처음 값을 바꾸지 않을 예정이였기 때문에 넣지 않았지만

바꿀거라면 Caption Text랑 Image를 제대로 링크 시켜줘야 한다

Item Text는 옵션의 텍스트들이 출력될 라벨

Item Image는 옵션의 이미지들이 출력될 스프라이트이다.

 

나는 선택한 이미지가 잘 선택되었는지 확인하기 위해서

다른 이미지 오브젝트를 생성해 확인하였다 .

 

Image Object에 다음과 같은 스크립트를 붙인다

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

using UnityEngine;

using System.Collections;

using UnityEngine.UI;

   

public class DropBoxClick : MonoBehaviour {

   

    public Dropdown dropdown;

    private Image image;

   

    // Use this for initialization

    void Start () {

        image = GetComponent<Image>();

        dropdown.onValueChanged.AddListener(DropdownValueChange);

    }

   

    public void DropdownValueChange(int value)

    {

        image.sprite = dropdown.options[value].image;

        Debug.Log(dropdown.options[value].image.name);

    }

}

   

  

 

 

링크 빠짐없이 걸어주고 플레이 하면 끝

 

처음에 default값이 0으로 첫번째를 선택하고 있는데

그게 싫다면 -1로 바꿔주면 됨.

 

 

 

http://stackoverflow.com/questions/32680348/unity3d-slider-onvaluechanged-sending-only-0-or-other-defined-value

http://answers.unity3d.com/questions/800278/adding-a-listener-to-toggleonvaluechanged-via-scri.html

 

http://forum.unity3d.com/threads/dropfix-cs-unlock-horizontal-overflow-for-the-new-5-2-ugui-dropdown-control-free.353936/

http://pastebin.com/v15Mq4ZZ#

 

 

기본 UGUI Dropdown메뉴는 글자가 길어질시 글자가 잘리는데

이걸 해결하신 발 빠른 분들이 있음

밑에 달려있는 댓글의 코드가 잘 작동

템플릿에 스크립트를 연결만 하면 끝

 

UnityVS가 import 오류를 내뿜는 중

 

\Library 폴더 안에 UnityAssemblies 폴더를 만들어 주면 해결

 

http://stackoverflow.com/questions/32536151/unityvs-error-on-importing

Shaders

셰이더란, 물체의 질감을 표현하기 위한 수학적인 공식을 GPU 그래픽 카드가 이해하는 프로그램으로 작성한 것이다. 이 프로그램을 GPU에 전달하면 GPU는 이를 받아 모니터 해상도 수만큼의 색상 정보를 고속으로 빠르게 계산하여 최종 화면을 만들어낸다.

 

Unity5 이전의 Shaders

물체의 기본적인 음영과 하이라이팅 효과를 부여하는 스페큘러 모델을 구현한 쉐이더가 기본적인 유니티의 표준 쉐이더 이고, 이 스페큘러 모델은 반짝임(Shininess) 또는 스페큘러 파워(Power)라고 불리는 수치를 조정해 물체가 반사되는 하이라이팅 영역을 조절하여 사용하였다.

스페큘러 쉐이더 모델 공식

실제로 잘 와닿지 않고 접근하기 어렵다는 측면이 있다.

그래서 발전한 것이 물리 기반 쉐이딩이다.

 

물리 기반 쉐이딩(Physically Based Shading)

물리 기반 쉐이딩은 쉐이더를 잘 모르더라도 물체의 질감을 현실감있게 표현할 수 있도록 만들어 주는 쉐이더 기술이다.

  • Roughness, 물체의 표면이 거친 정도
  • Metallic, 물체의 금속성(특유의 색상과 반사 능력이 있는지)
  • Energy conservation, 에너지 보존 법칙(오브젝트가 빛의 양을 받는 만큼만 반사하도록 조절)

세 개의 값을 조절해서 직관적이고 쉬운 쉐이더를 작성할 수 있게 되었다.

예전에는 맵의 환경에 따라 쉐이더를 일일히 제작해야 했는데 물리기반쉐이딩을 사용해 물체의 질감을 표현하면 알아서 주위환경을 반영(Global Illumination)하기 때문에 일일히 바꿔줄 필요가 없다.

 

Unity5의 Standard Shader

Unity5부터는 이런 물리기반 쉐이딩이 적용된 Shader를 Standard Shader로 부른다.

Standard Shader에는 두 종류가 있는데 Standard 와 Standard(Specular setup)이다.

Standard 쉐이더는 PBR을 사용할 수 있는 쉐이더고, Standard(Specular)는 Unity5 이전의 쉐이더를 가르킨다.

  • Rendering Mode
    • Opaque – default, 투명하지 않은 영역에서의 일반 솔리드 오브젝트에 사용
    • Cutout – 불투명과 투명영역 사이의 하드 엣지를 가진 투명효과를 만들 수 있다. 이 모드에서는 반투명 영역이 존재하지 않고, 텍스처는 어느 한쪽이 100%불투명하거나 보이지 않는다. 구멍이나 너덜너덜한 잎, 천 같은 투명도를 사용하는 머티리얼의 형상을 생성할 때 유용하다.
    • Transparent – 투명한 플라스틱이나 유리 등의 현실적인 투명한 머티리얼과 같은 렌더링에 적합하다. 머티리얼 자체는 텍스처의 알파 체널과 틴트 컬러의 알파에 근거한 투명도 값이다. 반사와 조명의 하이라이트는 진짜 투명한 재질 처럼 나타내준다.
    • Fade – 투명도 값이 스펙큘러 하이라이트 및 반사를 포함해서 오브젝트를 완전히 fade out 할 수 있게 해준다. 이 모드는 오브젝트의 fade in, fade out 애니메이션을 적용하는 경우에 유용하다. Transparent와 다르게 반사와 하이라이트도 fade out 되기 때문에 투명한 플라스틱이나 유리 같은 현실적인 투명한 머티리얼을 렌더링하는 데에는 적합하지 않다.

예시 참조 : http://docs.unity3d.com/kr/current/Manual/StandardShaderMaterialParameterRenderingMode.html

  • Albedo – 표면의 기본 색상
    • 알베도 색상 알파값은 머티리얼의 투명도를 제어 하는데 이것은 Rendering Mode가 transparent모드 중 하나이며 Opaque가 아닐 때 적용된다. 현실적인 투명한 오브젝트 표현을 위해서는 알베도의 알파값을 조절하면 된다.
    • 알베도 파라미터로 지정되는 텍스쳐를 사용할 경우, 알베도 텍스쳐 이미지의 알파체널을 통해서 머티리얼의 투명성을 제어할 수 있다. 알파체널값은 흰색은 완전히 불투명한 것을 말하고 검정은 완전 투명한 것을 의미하며 transparency레벨에 맵핑된다.
  • Metallic, Smoothness
    • Metalic - 표면이 얼마나 금속 같은가를 결정한다. 1일수록 금속에 가까움.
    • Smoothness – 표면의 매끄러운 정도를 결정한다. 1일수록 거울 효과에 가까움
    • 반드시 금속인 머티리얼을 위해서만 있는 것이 아니다.
    • Metallic에 텍스쳐를 사용한다면 Smoothness와 Metallic의 값을 지정할 수 없게 되는데 이럴경우 텍스쳐의 Red Channel에 따라 Metallic을 조절하고 Alpha Channel을 통해 Smoothness를 조절한다.

예시참조 : http://docs.unity3d.com/kr/current/Manual/StandardShaderMaterialParameterMetallic.html

http://docs.unity3d.com/kr/current/Manual/StandardShaderMaterialParameterSmoothness.html

  • Normal map(Bump mapping)
    • 저해상도 모델 데이터를 이용하여 고해상도 모델 데이터의 모습을 표현하여 시뮬레이션 하므로 적은 시스템 리소스를 이용하여 많은 시스템 리소스를 사용한 것 과 같은 효율적인 작업을 진행하게 해준다.
    • Bump map은 1가지 채널의 흑백 이미지만을 사용해 어두운 부분은 들어가고 밝은 부분은 튀어나오게 만들어 놓았다.
    • Normal map은 3가지의 채널(RGB)을 사용해 수직, 수평, 깊이(x, y, z)를 표현한다. 여섯 방향에서 빛을 쏴 계산하는데 Positive Light는 0-127까지의 숫자를, Negative Light는 128-255의 숫자를 갖고 있다.
    • 요즘 기준인 Tangent 방식의 Normal Map은 각각의 면을 기준으로 RGB값을 산출하는데 Blue체널의 값은 반쪽만 쓰이게 된다. (면의 뒷면은 고려할 필요가 없기 때문에 사용하지 않는다) 그래서 요새 사용하는 Normal Map은 푸르딩딩한 Normal Map이다
    • 머티리얼에 노말맵을 적용시킬 때 texture type이 normal맵으로 설정되어 있지 않다면 Fix버튼이 뜬다
  • Height map
    • Height map = Parallax Mapping = Displacement Mapping
    • Height map은 Bump map이랑 비슷하지만 bump map은 높이가 있는 것처럼 표현 할 뿐이고 height map은 실제 지형의 높이를 만든다. 따라서 height map이 비용이 좀 비싸다.

texture mapping, + normal mapping, + height mapping

  • Occlusion Map
    • 모델의 영역이 강하거나 약한 간접조명을 받아야 하는 지에 대한 정보를 제공하는데 사용. (간접조명은 GI에서 옴)
    • occlusion Map이 노출이나 주변 조명에서 숨겨진 캐릭터의 소매 같은 영역을 식별한다.
  • Emmission
    • 표면에서 방출되는 빛의 색상과 강도를 제어한다. 값이 클수록 자체 발광하는 것처럼 보인다.
    • 모니터 스크린, 자동차 디스크 브레이크, 제어판 버튼, 어둠 속에서 빛나는 괴물의 눈 등에 사용한다.
    • Emission Map은 발광하는 물체인 만큼 GI에 영향을 미치기 때문에 GI Option이 있다.
      • None – 혼자 자체발광 중. 주변에는 영향을 미치지 않는다.
      • Realtime – 오브젝트의 발광이 실시간으로 GI에 영향을 미친다. 따라서 움직이는 물체에도 영향을 미친다.
      • Baked – 오브젝트의 빛을 static Light Map에 구워 점등되어 있는 것처럼 보이게 한다. 하지만 동적으로 움직이는 물체에는 영향을 받지 않는다.
  • Secondary Maps(Detail Maps) & Detail Mask
    • 캐릭터의 피부에 모공이나 털 같은 피부의 세부사항을 추가하거나 벽돌 벽에 작은 균열이나 이끼를 추가하거나 큰 금속 용기에 작은 상처나 찰과상을 추가하는 등의 작업에 사용한다.
    • 두 번째 Albedo맵과 Normal맵을 사용할 수 있다.
    • Detail Mask는 부분적으로만 Secondary Map가 적용되도록 하는 mask이다. 예를 들면 입술과 눈썹에는 피부의 모공이 표시되지 않도록 하는 것이다.

 

전체 PBR 머티리얼 차트

http://docs.unity3d.com/kr/current/Manual/StandardShaderMaterialCharts.html

With me, the reason that OnBecameInvisible() didn't trigger was that while the Game view camera lost vision of the object, the Scene view camera continued to see it. So i had to hide the scene view tab, and leave only the Game view tab visible in the editor.

http://forum.unity3d.com/threads/onbecameinvisible-not-working-on-my-object-whats-wrong-in-here.181009/


하이라키 외에 Scene View도 카메라로 인식 Scene View를 꺼보길...


https://github.com/kaistseo/UnitySocketIO-WebSocketSharp


ios랑 웹은 쓰는 파일이 다르다고 나와있으니 주의

'Unity' 카테고리의 다른 글

UNITY5의 Shaders  (0) 2015.10.23
OnBecameInvisible 함수가 작동하지 않을 때  (0) 2015.09.10
회사원 쪼꼬두유  (0) 2015.08.05
Unity Platform 별 Script  (0) 2015.08.05
Unity 모바일 시스템 언어 갖고오기  (0) 2015.08.05

http://docs.unity3d.com/kr/current/Manual/PlatformDependentCompilation.html

http://dkdlel072.tistory.com/entry/unity-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EC%8B%9C-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EA%B5%AC%EB%B6%84-%EB%B0%A9%EB%B2%95

http://docs.unity3d.com/ScriptReference/RuntimePlatform.html

 

  • 전처리 소스 구분 코드

1

2

3

4

5

#if (UNITY_ANDROID || UNITY_IPHONE) 

    폰용 소스 

#else 

    다른 플랫폼 소스 

#endif 

cs

  • 비 전처리 소스 구분 코드

1

2

if (Application.platform == RuntimePlatform.WindowsPlayer)

    print ("Do something special here!");

cs

 

 

플랫폼 매크로 정의

Unity 스크립트에서 지원하는 플랫폼 매크로 정의 :

프로퍼티:

기능:

UNITY_EDITOR

Unity 스크립트에서 지원하는 플랫폼 매크로 정의 :

UNITY_EDITOR_WIN

Windows에서의 플랫폼 정의 에디터 코드.

UNITY_EDITOR_OSX

Mac OSX에서의 플랫폼 정의 에디터 코드.

UNITY_STANDALONE_OSX

Mac OS (Univeral, PPC 및 Intel 아키텍처 포함) 의 코드 컴파일 / 실행을 위한 플랫폼 매크로 정의.

UNITY_STANDALONE_WIN

Windows 독립 실행형 응용 프로그램 코드를 컴파일 / 실행하고 싶을 때 사용합니다.

UNITY_STANDALONE_LINUX

Linux 독립 실행형 응용 프로그램 코드를 컴파일 / 실행하고 싶을 때 사용합니다.

UNITY_STANDALONE

모든 독립 실행형 응용 프로그램(Mac, Windows 또는 Linux)의 코드를 컴파일 / 실행하고 싶을 때 사용합니다.

UNITY_WEBPLAYER

Web Player 콘텐츠(Windows 및 Mac Web Player 실행 파일을 포함합니다) 플랫폼 매크로 정의.

UNITY_WII

Wii 콘솔 코드 컴파일 / 실행을 위한 플랫폼 매크로 정의.

UNITY_IOS

iOS 플랫폼에서 코드 컴파일/실행을 위한 플랫폼 매크로 정의

UNITY_IPHONE

Deprecated. Use UNITY_IOS instead.

UNITY_ANDROID

Android 플랫폼의 플랫폼 매크로 정의.

UNITY_PS3

PlayStation 3에서 코드 컴파일 / 실행을 위한 플랫폼 매크로 정의.

UNITY_PS4

PlayStation 4에서 코드 컴파일 / 실행을 위한 플랫폼 매크로 정의.

UNITY_XBOX360

XBox 360 코드의 컴파일 / 실행을 위한 플랫폼 매크로 정의.

UNITY_XBOXONE

XBox One 코드의 컴파일 / 실행을 위한 플랫폼 매크로 정의.

UNITY_BLACKBERRY

Blackberry10 장치를 위한 플랫폼 매크로 정의.

UNITY_WP8

Windows Phone 8 플랫폼 매크로 정의.

UNITY_WP8_1

Windows Phone 8.1 플랫폼 매크로 정의.

UNITY_WSA

Platform define for Windows Store Apps (additionally NETFX_CORE is defined when compiling C# files against .NET Core).

UNITY_WSA_8_0

SDK 8.0을 타케팅했을 때의 Windows Store Apps 플랫폼 매크로 정의.

UNITY_WSA_8_1

SDK 8.1을 타케팅했을 때의 Windows Store Apps 플랫폼 매크로 정의.

UNITY_WINRT

Equivalent to UNITY_WP8 | UNITY_WSA.

UNITY_WINRT_8_0

Equivalent to UNITY_WP8 | UNITY_WSA_8_0.

UNITY_WINRT_8_1

Equivalent to UNITY_WP_8_1 | UNITY_WSA_8_1. It's also defined when compiling against Universal SDK 8.1.

UNITY_WEBGL

WebGL 플랫폼 매크로 정의.

 

또한 작업을 하고 있는 Unity 엔진 ​​버전에 따라 코드를 선택적으로 컴파일할 수 있습니다. 현재 지원되고 있는 것은 :

 

UNITY_2_6

Unity 2.6 버전의 플랫폼 매크로 정의.

UNITY_2_6_1

Unity 2.6.1 버전의 플랫폼 매크로 정의.

UNITY_3_0

Unity 3.0 버전의 플랫폼 매크로 정의.

UNITY_3_0_0

Unity 3.0.0 버전의 플랫폼 매크로 정의.

UNITY_3_1

Unity 3.1 버전의 플랫폼 매크로 정의.

UNITY_3_2

Unity 3.2 버전의 플랫폼 매크로 정의.

UNITY_3_3

Unity 3.3 버전의 플랫폼 매크로 정의.

UNITY_3_4

Unity 3.4 버전의 플랫폼 매크로 정의.

UNITY_3_5

Unity 3.5 버전의 플랫폼 매크로 정의.

UNITY_4_0

Unity 4.0 버전의 플랫폼 매크로 정의.

UNITY_4_0_1

Unity 4.0.1 버전의 플랫폼 매크로 정의.

UNITY_4_1

Unity 4.1 버전의 플랫폼 매크로 정의.

UNITY_4_2

Unity 4.2 버전의 플랫폼 매크로 정의.

UNITY_4_3

Unity 4.3 버전의 플랫폼 매크로 정의.

UNITY_4_5

Unity 4.5 버전의 플랫폼 매크로 정의.

UNITY_4_6

Unity 4.6 버전의 플랫폼 매크로 정의.

UNITY_5_0

Unity 5.0 버전의 플랫폼 매크로 정의.

 

RuntimePlatform

 

OSXEditor

In the Unity editor on Mac OS X.

OSXPlayer

In the player on Mac OS X.

WindowsPlayer

In the player on Windows.

OSXWebPlayer

In the web player on Mac OS X.

OSXDashboardPlayer

In the Dashboard widget on Mac OS X.

WindowsWebPlayer

In the web player on Windows.

WindowsEditor

In the Unity editor on Windows.

IPhonePlayer

In the player on the iPhone.

XBOX360

In the player on the XBOX360.

PS3

In the player on the Play Station 3.

Android

In the player on Android devices.

LinuxPlayer

In the player on Linux.

WebGLPlayer

In the player on WebGL?

WSAPlayerX86

In the player on Windows Store Apps when CPU architecture is X86.

WSAPlayerX64

In the player on Windows Store Apps when CPU architecture is X64.

WSAPlayerARM

In the player on Windows Store Apps when CPU architecture is ARM.

WP8Player

In the player on Windows Phone 8 device.

TizenPlayer

In the player on Tizen.

PSP2

In the player on the PS Vita.

PS4

In the player on the Playstation 4.

XboxOne

In the player on Xbox One.

SamsungTVPlayer

In the player on Samsung Smart TV.

 

 

http://nadahacker.tistory.com/entry/Unity3d-%ED%98%84%EC%9E%AC-%EC%82%AC%EC%9A%A9%EC%A4%91%EC%9D%B8-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90-%EC%96%B8%EC%96%B4%EB%A5%BC-%EA%B0%80%EC%A0%B8%EC%98%A4%EC%9E%90

 

 

Debug.Log(Application.systemLanguage);

 

SystemLanguage의 종류는....

public enum SystemLanguage

{

Afrikaans = 0,

Arabic = 1,

Basque = 2,

Belarusian = 3,

Bulgarian = 4,

Catalan = 5,

Chinese = 6,

Czech = 7,

Danish = 8,

Dutch = 9,

English = 10,

Estonian = 11,

Faroese = 12,

Finnish = 13,

French = 14,

German = 15,

Greek = 16,

Hebrew = 17,

Hungarian = 18,

Hugarian = 18,

Icelandic = 19,

Indonesian = 20,

Italian = 21,

Japanese = 22,

Korean = 23,

Latvian = 24,

Lithuanian = 25,

Norwegian = 26,

Polish = 27,

Portuguese = 28,

Romanian = 29,

Russian = 30,

SerboCroatian = 31,

Slovak = 32,

Slovenian = 33,

Spanish = 34,

Swedish = 35,

Thai = 36,

Turkish = 37,

Ukrainian = 38,

Vietnamese = 39,

Unknown = 40,

}

'Unity' 카테고리의 다른 글

회사원 쪼꼬두유  (0) 2015.08.05
Unity Platform 별 Script  (0) 2015.08.05
NGUI DropDown Menu 만들기  (0) 2015.08.05
Mouse좌표를 NGUI 카메라 좌표로 바꾸는 법  (0) 2015.07.24
Update, LateUpdate 차이  (0) 2015.07.22

ITween을 사용했고 TweenPosition도 NGUI에서 제공하긴 하는데 걔는 뭔가 위치가 애매해서 잘 모르겠음 나중에 뜯어봐야지

여하튼 드롭다운 메뉴를 만드는데

처음에 메뉴를 만들 때 다 펴진 상태로 배치를 해놓고 Active 시켜서 나타내는걸로 만듬

그리고 Awake에서 위치를 저장해놓고 계속 사용할 계획

그래서 펴질때는 MoveFrom을 사용해 펼쳐지게 만들고

닫힐때는 MoveTo를 이용해서 만듬

   

근데 계속 클릭하면 버그가 생기는데

그걸 ITween.Stop으로 잡으면 안됨

그러면 중간에 플레이 되고 있던 모든 ITween 애니메이션이 사라지기 때문에 붕뜸

클릭을 일단 막고

Itween과 상관없이 그 위에 그냥 ITween을 동작하게 만들면 깔끔

   

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

61

62

63

64

65

66

67

68

69

70

71

72

73

74

public void ClickPageBTN()

    {

        SoundPluginManager.Instance.CreateSound("se_icon_common_touch");

     

//         iTween.Stop();

     

        TEX_BTNShadow.gameObject.SetActive(true);

     

     

        if (ObjColumn.gameObject.activeInHierarchy == false)

        {

            ObjColumn.gameObject.SetActive(true);

            BTN_Shadow.gameObject.SetActive(true);

     

            StartCoroutine(OpenPage()); 

        }

     

        else

        {

            StartCoroutine(ClosePage());

        }

    }

     

    void CloseColumn()

    {

        ObjColumn.gameObject.SetActive(false);

        BTN_Shadow.gameObject.SetActive(false);

     

        TEX_BTNShadow.gameObject.SetActive(true);

     

        if (tram_BTN_SortArr.Length != 0)

        {

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

            {

                Vector3 target = tram_BTN_SortArr[i];

                target.z = this.gameObject.transform.position.z;

     

                BTN_SortArr[i].gameObject.transform.position = target;

            }

        }

     

        TEX_BTNShadow.gameObject.SetActive(false);

    }

     

    IEnumerator OpenPage()

    {

        TEX_BTNShadow.gameObject.SetActive(true);

     

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

        {

     

            iTween.MoveFrom(BTN_SortArr[i].gameObject, iTween.Hash("position", BTN_Page.transform.position, "time"1.5));

        }

        yield return new WaitForSeconds(2);

     

        TEX_BTNShadow.gameObject.SetActive(false);

     

    }

     

    IEnumerator ClosePage()

    {

        TEX_BTNShadow.gameObject.SetActive(true);

     

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

        {

            iTween.MoveTo(BTN_SortArr[i].gameObject, iTween.Hash("position", BTN_Page.gameObject.transform.position, "time"0.75));

        }

     

        yield return new WaitForSeconds(1f);

     

        TEX_BTNShadow.gameObject.SetActive(false);

     

        CloseColumn();

    }

Colored by Color Scripter

cs

'Unity' 카테고리의 다른 글

Unity Platform 별 Script  (0) 2015.08.05
Unity 모바일 시스템 언어 갖고오기  (0) 2015.08.05
Mouse좌표를 NGUI 카메라 좌표로 바꾸는 법  (0) 2015.07.24
Update, LateUpdate 차이  (0) 2015.07.22
Unity Linq  (0) 2015.07.13

+ Recent posts