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

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
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

[파일]

SetTexture.cs



작업을 하다보니..

 

새로 등록한 이미지들의 Import Setting 바꿔주는 부분이 귀찮아서...

기존 작업방식은 추가한것들 한꺼번에 클릭후 Inspector 에서 동일하게 바꿔주는 방법이였는데..

 

정말 귀찮아서..만든 클래스.

 

사용법은

 

Assets 폴더 안에 Editor 폴더를 만들고 혹은 거기에 넣고

 

텍스쳐들이 들어있는 폴더나 바꾸고자 하는텍스쳐에 마우스 오른버튼을 클릭하면.

 

생성되어있는 MySpriteSet  이라는 메뉴를 클릭하면 사용자가 기본설정해논 텍스쳐 옵션대로 모든 텍스쳐가 셋팅된다.

 

스크립트 속 기본이 되는 텍스쳐 옵션은 사용자에 맞춰 변경하면 됨.



출처 : http://hanamoni.tistory.com/20

반응형

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

[Unity] Play Streaming Music From Server  (0) 2018.02.06
[펌] ADDING TO UNITY'S BUILT-IN CLASSES USING EXTENSION METHODS  (0) 2016.10.20
Extension Methods  (0) 2014.08.18
Nullable Types  (0) 2014.08.18
ObjectPool  (0) 2014.04.22
Posted by blueasa
, |

Unity Platform Defines

Unity3D/Tips / 2015. 1. 28. 15:50

[출처] http://docs.unity3d.com/Manual/PlatformDependentCompilation.html



Platform dependent compilation

Unity’s Platform Dependent Compilation feature consists of some preprocessor directives that let you partition your scripts to compile and execute a section of code exclusively for one of the supported platforms.

You can run this code within the Unity Editor, so you can compile the code specifically for your target platform and test it in the Editor.

Platform #define directives

The platform #define directives that Unity supports for your scripts are as follows:

DefineFunction
UNITY_EDITOR#define directive to call Unity Editor scripts from your game code.
UNITY_EDITOR_WIN#define directive for Editor code on Windows.
UNITY_EDITOR_OSX#define directive for Editor code on Mac OS X.
UNITY_EDITOR_LINUX#define directive for Editor code on Linux.
UNITY_STANDALONE_OSX#define directive to compile or execute code specifically for Mac OS X (including Universal, PPC and Intel architectures).
UNITY_STANDALONE_WIN#define directive for compiling/executing code specifically for Windows standalone applications.
UNITY_STANDALONE_LINUX#define directive for compiling/executing code specifically for Linux standalone applications.
UNITY_STANDALONE#define directive for compiling/executing code for any standalone platform (Mac OS X, Windows or Linux).
UNITY_WII#define directive for compiling/executing code for the Wii console.
UNITY_IOS#define directive for compiling/executing code for the iOS platform.
UNITY_IPHONEDeprecated. Use UNITY_IOS instead.
UNITY_ANDROID#define directive for the Android platform.
UNITY_PS4#define directive for running PlayStation 4 code.
UNITY_XBOXONE#define directive for executing Xbox One code.
UNITY_LUMIN#define directive for the Magic Leap OS platform. You can also use PLATFORM_LUMIN.
UNITY_TIZEN#define directive for the Tizen platform.
UNITY_TVOS#define directive for the Apple TV platform.
UNITY_WSA#define directive for Universal Windows Platform. Additionally, NETFX_CORE is defined when compiling C# files against .NET Core and using .NET scripting backend.
UNITY_WSA_10_0#define directive for Universal Windows Platform. Additionally WINDOWS_UWP is defined when compiling C# files against .NET Core.
UNITY_WINRTSame as UNITY_WSA.
UNITY_WINRT_10_0Equivalent to UNITY_WSA_10_0
UNITY_WEBGL#define directive for WebGL.
UNITY_FACEBOOK#define directive for the Facebook platform (WebGL or Windows standalone).
UNITY_ANALYTICS#define directive for calling Unity Analytics methods from your game code. Version 5.2 and above.
UNITY_ASSERTIONS#define directive for assertions control process.
UNITY_64#define directive for 64-bit platforms.

You can also compile code selectively. The options available depend on the version of the Editor that you are working on. Given a version number X.Y.Z (for example, 2.6.0), Unity exposes three global #define directives in the following formats: UNITY_XUNITY_X_Y and UNITY_X_Y_Z.

Here is an example of #define directives exposed in Unity 5.0.1:

DefineFunction
UNITY_5#define directive for the release version of Unity 5, exposed in every 5.X.Y release.
UNITY_5_0#define directive for the major version of Unity 5.0, exposed in every 5.0.Z release.
UNITY_5_0_1#define directive for the minor version of Unity 5.0.1.

Starting from Unity 5.3.4, you can compile code selectively based on the earliest version of Unity required to compile or execute a given portion of code. Given the same version format as above (X.Y.Z), Unity exposes one global #define in the format UNITY_X_Y_OR_NEWER, that can be used for this purpose.

The supported #define directives are:

DefineFunction
CSHARP_7_3_OR_NEWERDefined when building scripts with support for C# 7.3 or newer.
ENABLE_MONOScripting backend #define for Mono.
ENABLE_IL2CPPScripting backend #define for IL2CPP.
NET_2_0Defined when building scripts against .NET 2.0 API compatibility level on Mono and IL2CPP.
NET_2_0_SUBSETDefined when building scripts against .NET 2.0 Subset API compatibility level on Mono and IL2CPP.
NET_LEGACYDefined when building scripts against .NET 2.0 or .NET 2.0 Subset API compatibility level on Mono and IL2CPP.
NET_4_6Defined when building scripts against .NET 4.x API compatibility level on Mono and IL2CPP.
NET_STANDARD_2_0Defined when building scripts against .NET Standard 2.0 API compatibility level on Mono and IL2CPP.
ENABLE_WINMD_SUPPORTDefined when Windows Runtime support is enabled on IL2CPP. See Windows Runtime Support for more details.
ENABLE_INPUT_SYSTEMDefined when the Input System package is enabled in Player Settings.
ENABLE_LEGACY_INPUT_MANAGERDefined when the legacy Input Manager is enabled in Player Settings.

You use the DEVELOPMENT_BUILD #define to identify whether your script is running in a player which was built with the “Development Build” option enabled.

You can also compile code selectively depending on the scripting back-end.

Testing precompiled code

Below is an example of how to use the precompiled code. It prints a message that depends on the platform you have selected for your target build.

First of all, select the platform you want to test your code against by going to File > Build Settings. This displays the Build Settings window; select your target platform from here.

Build Settings window with PC, Mac & Linux selected as the target platforms
Build Settings window with PC, Mac & Linux selected as the target platforms

Select the platform you want to test your precompiled code against and click Switch Platform to tell Unity which platform you are targeting.

Create a script and copy/paste the following code:

// C#
using UnityEngine;
using System.Collections;

public class PlatformDefines : MonoBehaviour {
  void Start () {

    #if UNITY_EDITOR
      Debug.Log("Unity Editor");
    #endif
    
    #if UNITY_IOS
      Debug.Log("Iphone");
    #endif

    #if UNITY_STANDALONE_OSX
    Debug.Log("Stand Alone OSX");
    #endif

    #if UNITY_STANDALONE_WIN
      Debug.Log("Stand Alone Windows");
    #endif

  }          
}

To test the code, click Play Mode. Confirm that the code works by checking for the relevant message in the Unity console, depending on which platform you selected - for example, if you choose iOS, the message “Iphone” is set to appear in the console.

In C# you can use a CONDITIONAL attribute which is a more clean, less error-prone way of stripping out functions. See ConditionalAttribute Class for more information. Note that common Unity callbacks (ex. Start(), Update(), LateUpdate(), FixedUpdate(), Awake()) are not affected by this attribute because they are called directly from the engine and, for performance reasons, it does not take them into account.

In addition to the basic #if compiler directive, you can also use a multiway test in C#:


#if UNITY_EDITOR
    Debug.Log("Unity Editor");

#elif UNITY_IOS
    Debug.Log("Unity iPhone");

#else
    Debug.Log("Any other platform");

#endif


Platform custom #defines

It is also possible to add to the built-in selection of #define directives by supplying your own. Open the Other Settings panel of the Player settings and navigate to the Scripting Define Symbols text box.

Enter the names of the symbols you want to define for that particular platform, separated by semicolons. These symbols can then be used as the conditions for #if directives, just like the built-in ones.

Global custom #defines

You can define your own preprocessor directives to control which code gets included when compiling. To do this you must add a text file with the extra directives to the Assets folder. The name of the file depends on the language you are using. The extension is .rsp:

C# (player and editor scripts)<Project Path>/Assets/mcs.rsp

As an example, if you include the single line -define:UNITY_DEBUG in your mcs.rsp file, the #define directive UNITY_DEBUG exists as a global #define for C# scripts, except for Editor scripts.

Every time you make changes to .rsp files, you need to recompile in order for them to be effective. You can do this by updating or reimporting a single script (.js or .cs) file.

Note:__If you want to modify only global #define directives, use Scripting Define Symbols__ in Player settings, because this covers all the compilers. If you choose the .rsp files instead, you need to provide one file for every compiler Unity uses.

The use of .rsp files is described in the ‘Help’ section of the mcs application, which is included in the Editor installation folder. You can get more information by running mcs -help.

Note that the .rsp file needs to match the compiler being invoked. For example:

  • when targeting the .NET 3.5 Equivalent (deprecated) scripting runtime version, mcs is used with mcs.rsp, and
  • when targeting the .NET 4.x Eqivalent scripting runtime version compiler, csc is used with csc.rsp.


반응형
Posted by blueasa
, |

NGUI의 이미지를 밝게(Additive) 만들 필요가 있어서 간단하게 아틀라스가 사용할 쉐이더의 블랜딩만 수정했다.

 

[파일]

Unlit - Transparent Colored Additive.shader
0.00MB

수정하고 보니 수정된 쉐이더(Unlit - Transparent Colored Additive)가 다른 곳은 정상적으로 적용되는 데, 스크롤뷰(Grid) 사용부분은 적용이 되지 않았다.

 

그래서 검색하다보니 아래와 같은 내용이 있다.(링크 : http://www.tasharen.com/forum/index.php?topic=5180.0 )

NGUI's clipping is done by choosing a different shader with a similar name. Look at the existing shaders, for exmaple:

Unlit - Transparent Colored < -- used if no clipping is needed
Unlit - Transparent Colored 1 <-- used if there is 1 panel clipping the content
Unlit - Transparent Colored 2 <-- used if there are 2 panels clipping the content
Unlit - Transparent Colored 3 <-- used if there are 3 panels clipping the content

When making custom shaders, you would need to follow the same naming convention. The easiest thing to do is to just make a copy of at least two shaders (the first two) and modify them to suit your needs. In case of additive blending, all you would do is change the blend line from:

Code: [Select]
Blend SrcAlpha OneMinusSrcAlpha

to:

Code: [Select]
Blend One One

Source: https://docs.unity3d.com/Documentation/Components/SL-Blend.html

 

 

이름은 같고 뒤에 숫자가 달린 얘들은 Hidden이라 메뉴에 보이지 않는데 왜 있는지 궁금했었는데..

위 설명을 보니 뒤 숫자는 Panel Clipping의 개수였다.

NGUI에서 Panel을 체크해서 자동으로 Hidden인 애들 중에서 패널개수에 맞는 쉐이더를 찾아 쓰고 있다.

 

결론적으로 Clipping을 하는 스크롤뷰는 패널로 보기 때문에 숫자가 달린 애들 중 하나(1인가?)를 쓰는 것 같다.

그래서 숫자달린 파일들도 다 만들어 줬다.

 

[파일]

Unlit - Transparent Colored Additive 1.shader
0.00MB
Unlit - Transparent Colored Additive 2.shader
0.00MB
Unlit - Transparent Colored Additive 3.shader
0.00MB
Unlit - Transparent Colored Additive (TextureClip).shader
0.00MB
Unlit - Transparent Colored Additive (Packed) (TextureClip).shader
0.00MB

 

[결론]

NGUI에 쉐이더 추가할 때는 패널을 감안해서 뒤에 숫자(1~3)달린 애들도 같은 이름으로 함께 만들어 주자.

 

 

 

 

[기타참조]

 

[Unlit - Additive Colored]

Unlit - Additive Colored.shader
다운로드

 

http://sourceforge.net/p/merkabaos/git/ci/dbd2a9bddaba5e4580f4a93dc279255accecf19c/tree/Assets/NGUI/Resources/Shaders/Unlit%20-%20Additive%20Colored.shader

 
 
[Unlit Transparent Vertex Colored Additive]

 

 

반응형
Posted by blueasa
, |

1. AssetBundle 란? 및 필요성

 - 어플리케이션의 Runtime 시 외부에서 Resource(Asset)를 가져올 수 있도록 해주는 Unity3D 고유의 기능

 - 패키지지향 게임과 서비스지향 게임(업데이트)

 - Web 기반과 Smart phone 기반에서의 분할 다운로드
   * 아이폰 앱스토어나 안드로이드 마켓에서 파일이 일정 크기 이상이면 3g로 다운로드가 허용되지 않으며 wi-fi 로 다운 받게 끔 되어 있음.
     여기서 wi-fi 모드로 다운 받게 끔 제한시 다운로드 횟수가 현저히 저하되는 경우 발생 (컨텐츠의 접근성에 심각한 문제가 발생)
     -> 초기 실행 파일을 작게하고 게임 내에서 다운로드 받는 기법 사용하여 해결, 이 경우 AssetBundle 을 사용하여 해결 가능

 

2. Native 구현 vs AssetBundle
  >>  AssetBundle는 Unity3D(Pro만!)에서 제공하는 런타임에 리소스를 가지고 오는 기술을 말하는데

        C#  등으로 직접 구현하는 것과 무슨 차이점이 있고 또, 어떤 특징이 있는가?

 - 모든 플랫폼에서 일관적인 방법으로 이용 가능 (Flash 빌드 제외!)
   * 웹플랫폼으로 만들경우 Sandbox 보안 정책이 적용 - 로컬에서 파일을 읽기는 가능하지만 저장하지 못함.
   * 다른 플랫폼에서는 가능 (stand-alone, ios, android) 
   * AssetBundle을 사용하면 웹플랫폼 빌드 일 때 로컬에 cache로 저장하는 방법이 사용 가능함

     (웹플레이어가 AssetBundle의 cache를 생성 해줌)

참고)  Flash 일경우에는 AssetBundle 및 WWW 클래스 사용 불가능, 웹서버를 사용하는 등의 우회적인 방법만 가능한 것으로 보임

 

 - Unity3D Editor에서 제공하는 Asset pipeline을 Runtime에 이용할 수 있는 유일한 수단
   * AssetBundle을 써야하는 가장 중요한 이유,  
   * 유니티는 에디터하고 플레이어하고 분리가 되어 있는 데 어셋을 불러와서 실제로 사용할 수 있게 가공해주는 건 에디터 밖에 못해줌
      >> 에디터에는 어셋을 임포트 해 주는 기능 하는 임포터가 존재함.
      >> 실제 유니티 프로젝트에서 보는 에셋들은 실제 데이타가 아니라 한번 가공한 데이타 (임포터 할때 마다 유니티 폴더 안 Library 내에 가공한 데이타가 들어감)
      >> 런타임 중에는 메쉬(fbx 파일) 등을 임포트 할 수 없다. 임포트를 하려면 임포터를 거쳐야하는데 임포터는 에디터 밖에 존재 하지 않음.
      >> 유니티는 네이티브한 데이타를 사용하는 데 상당히 제한적인 면이 있다. (예외적으로 텍스처(제약많음), 텍스트에셋 등은 임포터를 거치지 않고 사용할 수 있지만 
           그 외 기타 매터리얼, 게임 오브젝트, 메쉬 등의 오브젝트들은 임포터를 거쳐야 한다.)
      >> 어셋 번들에 에디터 내 임포터를 통해 가공된 데이타를 저장하여 런타임시 해당 어셋 번들을 사용할 수 있다.

 - Push, Pop의 개념을 이용한 AssetBundle끼리의 의존관계 설정 가능
   * 두개 모델이 같이 사용하는 텍스처를 모델과 따로 어셋번들로 뽑아서 두개 모델이 해당 텍스처를 같이 사용하는 식으로 사용 가능.

 - Memory관리 용도로 사용 가능

 - Caching과 Version관리기능 제공
   * 로컬에 캐싱해서 매번 다운로드를 방지. 또한 캐싱시 버전을 부여하여 관리 가능 (이것을 이용하면 온라인 게임의 Patch시스템 구현 가능)

 - WWW class를 이용한 비동기 다운로드가 가능

참고) 유니티 코리아 사이트 공식 문서 AssetBundle -> http://unitykoreawiki.com/index.php?n=KrMain.AssetBundles

3. AssetBundle의 이용 방법

  - 로드

    * WWW.WWW()   http://unity3d.com/support/documentation/ScriptReference/WWW.WWW.html -  가장 일반적인 사용방법
    * AssetBundle.CreateFromMemory()
       >> 메모리 부터 어셋 번들을 생성, binary data 를 읽어와서 메모리를 올려놓고 어셋 번들을 생성하는 기능. 암호화 등의 특수한 처리가 필요할 때 유용
       
    * WWW.LoadFromCacheOrDownload()


 - Asset 얻기

    * AssetBundle.Contains() : 특정 어셋이 있는지 확인
    * AssetBundle.Load() : 실제 어셋을 가져오는 것
    * AssetBundle.LoadAsync() : 어셋을 비동기로 가지고 옴


 - 메모리에서 제거

    * AssetBundle.Unload(bool unloadAllLoadedObjects)
      >> true : 강제로 모두 내려버림. 어셋간 링크가 깨짐. false : 사용하지 않는 것만 추려서 메모리에서 내림 ( GC.Collect()를 먼저 호출해주면 더 안정적으로 동작 )

 

4.  AssetBundle의 생성 방법
    >> BuildPipeline를 이용하여 에디터 상에서만 생성 가능    

 - BuildPipeline.BuildAssetBundle() : 어셋을 어셋번들로 만들 때 일반적으로 사용 

Scene 를 어셋 번들로 생성할 수 있는 방법 
 - BuildPipeline.BuildStreamedSceneAssetBundle() 

 - BuildPipeline.BuildPlayer()

참고)  BuildPipeline.BuildStreamedSceneAssetBundle() 와 BuildPipeline.BuildPlayer() 차이점 이란 ??


 

참고할 만한 예제 소개

 - AssetBundle

 - Caharacter customization

 - Bundle loader

 - Bundle Sync


5. Caching을 이용한 버전과 메모리 관리

 - WWW.LoadFromCacheOrDownload()

 - Cache의 저장 경로

  * Windows7 : C:\Users\사용자이름\AppData\LocalLow\Unity\WebPlayer\Cache

  * Mac : 미확인

  * iOS : Document

  * Android : 미확인

 - Caching class를 이용하여 cache를 관리 Non Cache와 Cache 사용할 때의 메모리 사용방식의 차이가 생김 (Resource 클래스를 사용하는 경우와 유사)

 - Cache는 최대 4GB 까지 사용 가능. Caching class를 사용하여 조절
 - 웹빌드 일 경우 캐슁 라이센스에 영향을 받음 (다른 플렛폼에서는 별도의 캐슁 라이센스 없음)

 - WebPlayer/Cache/Shared 폴더의 사용 용량이 50MB로 제한되며 제한을 해제하기 위해서는 추가적인 라이센스 구매를 해야 함 (경험상 50MB제한이 제대로 동작 안하는 듯 함)

   ( 참고 : http://www.unity3dkorea.com/board/index.php?db=knowhow&no=118&mari_mode=view@view )

 

6. AssetBundle과 MonoScript의 관계

 - Unity3D에서 사용하는 C# 및JavaScript는 다른 일반적인 script언어처럼 인터프리터가 아닌 컴파일 언어이다. (컴파일 언어는 Runtime에 코드를 추가하기가 어려움)

 - 일반적인 경우

 - Assembly의 저장 (DLL?)

 - Lua script의 활용한다면?

 

7. 주의사항

 - AssetBundle.Load() 을 사용할 때 딸꾹질(랙)이 발생함

 - 용량이 큰 다수의 AssetBundle을 로드할 경우 Crash 발생율 큼

 - Web 빌드에서는 Caching.CleanCache() 가 작동 안함

 - Static Mesh를 사용하는 Scene을 Export하면 용량이 크게 증가함

 - Platform에 따라 별도로 제작되야 함

 - Unity3D의 버전에 지나치게 의존적

 - 내용물에 대한 보안기능을 제공 안함

 - 기본적으로 MonoScript의 컴파일 코드는 저장 못함


8. Effective AssetBundle

 - 다운로드를 Queue형태로 관리

 - Cache를 사용해서 Memory사용량을 관리

 - AssetBundle의 구성내용을 저장 및 관리

 - Platform 별로 자동 생성 기능의 필요

 - 보안을 위한 별도의 처리


출처 : https://www.assembla.com/spaces/a-h/wiki/AssetBundle_%EA%B0%80%EC%9D%B4%EB%93%9C/history

반응형

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

[링크] Unity5-AssetBundleSetting  (0) 2016.07.25
WWW.LoadFromCacheOrDownload  (0) 2015.04.23
AssetBundle 버전체크 방식..  (0) 2014.04.21
Unity AssetBundle Dependencies  (0) 2014.03.11
AssetBundle 생성부터 패치 및 적용까지.  (0) 2014.02.27
Posted by blueasa
, |




게임코디 글에서 우연히 굶지마(Don't Starve)를 추천해 주셔서 재밌어 보여서 살까했는데 고맙게도 게임코디 tinywolf님이 선물로 주심!!


재밌겠다!! +_+!


tinywolf님 감사합니다! (_ _)

반응형

'Game' 카테고리의 다른 글

[정보] 워렌 스펙터의 게임 제작 조언  (0) 2017.03.29
리세마라(リセマラ)  (0) 2015.01.04
무협 본고장의 MMORPG 구음진경  (0) 2011.07.31
철권6 리리 기술표  (0) 2011.06.17
[아이폰] 오픈 소스 게임: Canabalt  (0) 2011.01.03
Posted by blueasa
, |

[추가]

해놓고 보니 암호는 안넣고 편한 것 같긴한데..

작업관리자에 있는 Plink가 무슨짓을 하는지 Commit/Fetch/Pull/Push 등 서버와 통신이 필요한 짓을 하려고 하면 얼어버린 것 처럼 보일정도로 느려지는 현상이 생겨서 SourceTree를 껐는데도 컴퓨터 자체가 느림..

그래서 Plink를 끄니깐 그때서야 제 속도로 돌아왔다.

결국 그냥 OpenSSH로 쓰고 필요할 때 암호 넣는걸로 돌렸다.

암호 하나 안넣으려고 컴퓨터가 엄청 느려지는 걸 감수하기에는..;;






참조 : SourceTree for Windows with SSH key files 


잡설 


어쩔수 없이 회사에서 리눅스에 gitolite를 설치하고 윈도우 클라이언트에서 작업을 해야했다. 모든 것이 다 진행되다가 마지막에 가장 큰 문제점으로 나타난게 있다. ssh-key를 사용하여 비밀번호 없이 git에 접근 되게 설정을 해놨지만, 계속해서 Password를 요구하는 팝업 창이 나타났다. 삽을 들고 구글링을 해보았지만 제대로 나오는건 없었다. 그래서 포기하고 SVN으로 설정을 마치고 혹시나 하는 마음에 다시 삽을 들었는데 해결책은 정말 간단하였다. 


Private Key가 어디에서 사용되는지 몰라서 이것이 문제이겠거니라고 추측은 하고 있었는데 '어려운' 윈도우 때문에 알지 못했다. .ssh/ 가 있다면 참 좋을텐데. 


해결방법


해결책은 아주 간단하다. 우선 아래 그림과 같이 일단 PK를 PuTTY에서 만들거나, 아니면 ssk-keygen에서 만들어 진 키를 PuTTY 키로 변환을 한다. 












































그리고 윈도우의 오른쪽 하단에서 pageant 에서 View Keys를 클릭한뒤, "Add Key" 버튼을 클릭해서 PK 를 추가하면 끝이다. 










그러면 아래와 같이 password 입력 팝업창이 뜨지 않고 ssh-key로 접속이 잘되는 것을 확인 할 수 있다.




출처 : http://www.appilogue.kr/2844475

반응형
Posted by blueasa
, |

[파일] 

SourceTreeSetup_1.5.2.exe

SourceTreeSetup_1.5.2.zip



SourceTree is very slow on windows 7 https://answers.atlassian.com/questions/252979/

1.5.x 대는 문제 없었다고 해서 1.5.2 받았음. 이제야 쓸만하네. osx 용은 엄청 빠르던데 windows 는 대강 만들었나봄.

참고로 1.5.2 다운로드 링크 http://downloads.atlassian.com/software/sourcetree/windows/SourceTreeSetup_1.5.2.exe




[참조]

  1. Robert Sirre

    1.6.11.0 seems to be even slower, my colleague also downloaded 1.5.2. This version is still available at: http://downloads.atlassian.com/software/sourcetree/windows/SourceTreeSetup_1.5.2.exe


참조 링크  : https://answers.atlassian.com/questions/252979/

반응형
Posted by blueasa
, |


If you are seeking a reliable, bug-free and effective webview plugin for Unity mobile games, now you are in right place.

What is UniWebView?

UniWebView is to help you using WebView easily on iOS and Android platform (WP8 support is under development). You can set up a web view and embed web content in your game with less than 10 lines of code. There is also a clean and simple interface for you to interact between the game and webview. 

Main features:

  • A native webview (UIWebView for iOS, WebView for Android). Compatible with html5, css3 and javascript.
  • Send a message from webpage to Unity, using a specified url scheme. You can control the game flow and run your script code by clicking a url in the web page. By this strategy, you can implement a dynamic workflow to change your game logic on air.
  • Excute and eval javascript defined in Unity game or webpage.
  • The size and apperence of webview is customizable. Users can keep your game scene visble and running even when they interacting with web page.
  • Play youtube video and other media.
  • All source code of C# script and native plugin is included for a reference, with detailed documentation.
  • Easy debug for Unity Mac Editor. There is no need to build and run again and again in your device. You can preview and interact with the webview just in editor. (Supporting for Windows Editor is on the way)


Supporting
The code itself is well documented. There is also online user manual, script reference and supporting forum for you. Use the link below and feel free to visit them and ask if you have any question.


Get it from unity asset store and make mobile web view easy today!

Asset Store Link - https://www.assetstore.unity3d.com/#/content/12476





반응형
Posted by blueasa
, |

Unity3D WebView

Unity3D/Plugins / 2015. 1. 21. 17:46

Unity 3D에서 WebView를 쓸 때 유용한 소스 입니다. 

일본 개발자분이 오픈소스로 라이센스로 공개한 것 같더군요...


[소스]

https://github.com/gree/unity-webview


- Java로 작성된 Android 용 Native Plugin

- Objective-C로 작성된 iOS 용 Native Plugin

- Objective-C로 작성된 OS X 용 Native Plugin

- Native Plugin을 사용하기위한 C # Plugin


[예제 프로젝트]

https://github.com/keijiro/unity-webview-integration


unity-webview-integration 소스는 웹 페이지를 WebView로 호출에서 아래와 같이 unity와 기능을 연동한 예제 입니다.

javascript 예제여서 좀 아쉽네요. C#으로 수정해봐야 겠습니다.


http://keijiro.github.com/unity-webview-integration/index.html#

...

<title>Unity - WebView Integration Test Page</title>

<p><ul>

<li><a href="#" onclick='unity.callback("/spawn")'>Spawn a box</a></li>

<li><a href="#" onclick='unity.callback("/spawn", {color:"red"})'>Spawn a red box</a></li>

<li><a href="#" onclick='unity.callback("/spawn", {color:"blue"})'>Spawn a blue box</a></li>

<li><a href="#" onclick='unity.callback("/spawn", {color:"red", scale:0.5})'>Spawn a small red box</a></li>

<li><a href="#" onclick='unity.callback("/spawn", {color:"blue", scale:0.5})'>Spawn a small blue box</a></li>

<li><a href="#" onclick='unity.callback("/note", {text:"こんにちは"})'>「こんにちは」</a></li>

<li><a href="#" onclick='unity.callback("/note", {text:"ごきげんいかが"})'>「ごきげんいかが」</a></li>

<li><a href="#" onclick='unity.callback("/note", {text:"!@#$%^&*()-+"})'>"!@#$%^&*()-+"</a></li>

<li><a href="#" onclick='unity.callback("/close")'>Close</a></li>

<li><a href="page2.html">Go to page 2.</a></li>

</ul></p>

...


TestInterface.js (unity 3d script)

...

// Process messages coming from the web view.

private function ProcessMessages() {

    while (true) {

        // Poll a message or break.

        var message = WebMediator.PollMessage();

        if (!message) break;


        if (message.path == "/spawn") {

            // "spawn" message.

            if (message.args.ContainsKey("color")) {

                var prefab = (message.args["color"] == "red") ? redBoxPrefab : blueBoxPrefab;

            } else {

                prefab = Random.value < 0.5 ? redBoxPrefab : blueBoxPrefab;

            }

            var box = Instantiate(prefab, redBoxPrefab.transform.position, Random.rotation) as GameObject; 

            if (message.args.ContainsKey("scale")) {

                box.transform.localScale = Vector3.one * float.Parse(message.args["scale"] as String);

            }

        } else if (message.path == "/note") {

            // "note" message.

            note = message.args["text"] as String;

        } else if (message.path == "/print") {

            // "print" message.

            var text = message.args["line1"] as String;

            if (message.args.ContainsKey("line2")) {

                text += "\n" + message.args["line2"] as String;

            }

            Debug.Log(text);

            Debug.Log("(" + text.Length + " chars)");

        } else if (message.path == "/close") {

            // "close" message.

            DeactivateWebView();

        }

    }

}

...



// C#으로 변환한 소스 입니다.  by asuss님(출처 : http://reysion.tistory.com/34 의 댓글)

using UnityEngine;
using System.Collections;

public class TestWebView : MonoBehaviour {

public GUISkin guiSkin;
public GameObject redBoxPrefab;
public GameObject blueBoxPrefab;

private string note;

// Show the web view (with margins) and load the index page.
void ActivateWebView() {
WebMediator.LoadUrl("http://keijiro.github.com/unity-webview-integration/index.html");
WebMediator.SetMargin(12, Screen.height / 2 + 12, 12, 12);
WebMediator.Show();
}

// Hide the web view.
void DeactivateWebView() {
WebMediator.Hide();
// Clear the state of the web view (by loading a blank page).
WebMediator.LoadUrl("about:blank");
}

// Process messages coming from the web view.
void ProcessMessages() {
while (true) {
// Poll a message or break.
WebMediatorMessage message = WebMediator.PollMessage();
if (message == null) 
break;

if (message.path == "/spawn") {
// "spawn" message.
GameObject prefab = null;
if (message.args.ContainsKey("color")) {
prefab = (message.args["color"] == "red") ? redBoxPrefab : blueBoxPrefab;
} else {
prefab = Random.value < 0.5 ? redBoxPrefab : blueBoxPrefab;
}
var box = Instantiate(prefab, redBoxPrefab.transform.position, Random.rotation) as GameObject; 
if (message.args.ContainsKey("scale")) {
box.transform.localScale = Vector3.one * float.Parse(message.args["scale"] as string);
}
} else if (message.path == "/note") {
// "note" message.
note = message.args["text"] as string;
} else if (message.path == "/print") {
// "print" message.
var text = message.args["line1"] as string;
if (message.args.ContainsKey("line2")) {
text += "\n" + message.args["line2"] as string;
}
Debug.Log(text);
Debug.Log("(" + text.Length + " chars)");
} else if (message.path == "/close") {
// "close" message.
DeactivateWebView();
}
}
}

void Start() {
WebMediator.Install();
}

void Update() {
if (WebMediator.IsVisible()) {
ProcessMessages();
} else if (Input.GetButtonDown("Fire1") && Input.mousePosition.y < Screen.height / 2) {
ActivateWebView();
}
}

void OnGUI() {
float sw = Screen.width;
float sh = Screen.height;
GUI.skin = guiSkin;
if(note != null) 
GUI.Label(new Rect(0, 0, sw, sh/2), note);
GUI.Label(new Rect(0, sh/2, sw, sh/2), "TAP HERE", "center");
}
}



출처 : http://reysion.tistory.com/34

반응형
Posted by blueasa
, |

SourceTree에서 디렉토리를 Git Ignore하기 위해


디렉토리에 포함된 파일 (File)을 선택하고


우 클릭 후 Ignore...를 선택한다.

(한글버전: 우 클릭 후 '무시'를 선택한다.)


'Ignore everything beneath:'에서 Ignore할 디렉토리를 선택하고

(한글버전: '이하 모든 걸 무시'에서 무시할 디렉토리를 선택하고)


'Add this ignore entry to:'에서 'This repository only'를 선택한다.

(한글버전: '무시 범위:'에서 '이 저장소 전용'을 선택한다)



출처 : http://devday.tistory.com/entry/SourceTree%EC%97%90%EC%84%9C-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-Directory-Git-Ignore%ED%95%98%EA%B8%B0







참조 : http://stackoverflow.com/questions/9665399/how-to-ignore-all-files-in-a-folder-with-a-git-repository-in-sourcetree

반응형
Posted by blueasa
, |