iOS 사용시 권장하는 텍스처 포맷 : PVRTC


Android 사용시 권장하는 텍스처 포맷 (GPU에 따라 다름)

- Tegra: DXT

- Adreno: ATC

- 공통: ETC1 (OpenGL ES 2.0)

[Flags]

public enum PriceType

{

    None = 0,

    Gold = 1 << 0,

    Cash = 1 << 1,

    Heart = 1 << 2,

    Free = 1 << 3,

    All = int.MaxValue // int의 Max값을 넣으면 모든 비트가 1이므로 무조건 All이 된다

}

// [Flags] Attribute를 위에 붙여주면 비트연산처럼 사용가능

PriceType e_PriceType = PriceType.Gold | PriceType.Cash;

// Flag 값 확인

if((e_PriceType & PriceType.Gold) != 0)

{

    // Gold Flag값이 들어있으면

}

// Gold Flag 설정

e_PriceType |= PriceType.Gold;

// Gold Flag 제거

e_PriceType &= ~PriceType.Gold;

// Gold Flag 반전 (있으면 제거하고 없으면 설정)

e_PriceType ^= PriceType.Gold;

// Flag 모두 제거

e_PriceType = PriceType.None;

// Flag 모두 설정

e_PriceType = PriceType.All;

// Gold와 Free를 제외하고 모두 설정

e_PriceType = PriceType.All ^ PriceType.Gold ^ PriceType.Free;

현재 OS의 시스템 언어를 가져오는 법입니다.


switch 문으로 체크해서 언어설정 할때 쓰면 편하겠네요

Debug.Log(Application.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,

}


Awake 함수의 경우에 호출되는 시점이


저는 AddComponent 했을때 바로 호출된다고 생각을 했는데 (생성자 처럼)


그렇지 않아서 Add 한 후에 바로 안에 함수를 사용했을때 에러가 났습니다.


(Awake에서 GameObject 내부에서 Get해온다거나 하는 처리시, Awake보다 함수가 먼저 불려서 발생)


근데 바로 호출되는 시점이 있더군요


프리팹에 Component를 미리 추가해두고 그 프리팹을 불러와서 생성할 경우


Awake가 생성자처럼 바로 호출됩니다.

NGUI 초반버전때 NGUI에서 제공했던것으로 생각되는 조이스틱이다.


버전이 바뀌어서 수정할 부분이 있다.


1. 이걸 임포트하고나서 UIJoystick.cs가 Plugin폴더에 들어있는데 이걸 NGUI/Scripts/UI 폴더로 옮긴다.


2. UIJoystick.cs 스크립트에서 에러가 날것이니 아래 2가지를 전부 수정한다.

   - Tweener -> UITweener

   - UICamera.lastCamera -> UICamera.currentCamera



Unity4에 맞게, NGUI 2.5.1 버전에 맞게 다 수정해서 올려두었다.


이걸 왜 지금은 제공하지 않는건지 모르겠다.


(이거 있으면 정말 편한데.. 이거 없어서 얼마나 뻘짓을 했는지..)



처음부터 그냥 제공했으면 됬을거 아냐!





만약 조이스틱 컨트롤이 작동을 안할 경우에 Layer가 설정되어 있기 때문이므로 다른 Layer로 바꾸거나 Default로 바꿔주면 작동한다.


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




NGUI Joystick.unitypackage


비주얼 스튜디오에 테마를 적용하는 방법입니다. 


http://studiostyl.es/schemes  해당 사이트에 마음에 드는 테마를 다운 받습니다.


C:\Users\사용자 계정\Documents\Visual Studio 2010\Settings  


경로에 다운 받은 파일을 저장합니다. visual studio 메뉴에서   Tools/ Import and Export Settings 에서 테마를 Import하면  테마가 적용됩니다.


개인적으로 맘에드는 테마 2가지는 업로드 해두겠습니다.(Visual Stuido 2010, 2012용)


dbs-vim-dark.vssettings


eye-candy.vssettings


GameObject.active = true;

  • StartCoroutine : OK
  • Coroutine Method : OK
  • StopAllCoroutine : OK
  • Invoke : OK
  • InvokeRepeating : OK
  • CancelInvoke : OK


GameObject.active = false;

  • StartCoroutine : Error
  • Coroutine Method : Stop (active 상태에서 돌고 있는 상태였다면 정지된다.)
  • StopAllCoroutine : OK
  • Invoke : OK
  • InvokeRepeating : OK
  • CancelInvoke : OK

** 결론

  • StartCoroutine 으로 코루틴 메소드를 열심히 돌리다가 해당 GameObject 의 active 가 꺼지면 돌던 코루틴 메소드는 정지되고 다시 active 가 켜지더라도 재실행되지 않는다.....
  • 코루틴을 많이 사용하는 로직(Async 로 돌리는 함수들..(WWW, ... 같은...))에서는 꼭 염두해 두어야 한다..
  • OnDisable() {} 에서 관련 처리를 해 주는게 좋다.
  • Invoke 관련은 GameObject 의 active 유무랑 관계없이 돌아간다..

* Memory 해제 관련...

*. Prefab 을 public GameObject variable 로 연결하면 1개가 살아있다...
     - Resource 로 옮기고 Resource.Load 후 Instantiate 해준다음 Resource.UnloadUnusedAsset으로 로드했던 prefab을 해제시키자.


* Texture

- WWW 혹은 다른곳에서 load 한 texture 들은 사용하지 않을때 DestroyImmediate 로 꼭 해제시켜줘야 한다. DestroyImmediate 해주면 바로 memory 에서 해제된다.


*. GameObject Destroy 는 memory 를 바로 해제시키지 않는다.
     - Resource.UnloadUnusedAssets 를 해야 memory 에서 해제된다.
     - GameObject 를 DestroyImmediate 해도 포함되있는 Texture, material, 등은 memory에서 해제되지 않는다.

*. Load 한 Texture 들을 Member 로 가지고 있으면 GameObject Destroy 시 memory 해제 안된다.
     - Texture 는 개별 DestroyImmediate 하여 바로바로 해제하자.


출처: http://limchaeng.tistory.com/35




출처: http://gyuha.tistory.com/405


이전 버전을 계속 포스팅 했었는데, br태그가 이상하게 나온다거나.. tistory에서 사용 할 때 불편한 문제점들이 이것저것 있는데.. 아래 처럼 사용하면 좀 더 편하게 사용 할 수 있습니다.


먼저 최신 버전의 SyntaxHighlighter을 다운로드 받습니다. 


http://alexgorbatchev.com/SyntaxHighlighter/


압축을 풀면 아래와 같이 보입니다. 



여기서 scripts와 styles 폴더의 내용을 모두, 

관리자 화면 > 스킨 > HTML/CSS편집 > 파일 업로드에서 파일 업로드를 통해서 올려 줍니다.



추가 된 것을 확인 하시면,

관리자 화면 > 스킨 > HTML/CSS편집 > HTML/CSS편집에서 <title> 밑에 아래 코드를 추가해 줍니다.


<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js "></script>

<script type="text/javascript" src="./images/shCore.js"></script>

<script type="text/javascript" src="./images/shLegacy.js"></script>

<script type="text/javascript" src="./images/shBrushAppleScript.js"></script>

<script type="text/javascript" src="./images/shBrushAS3.js"></script>

<script type="text/javascript" src="./images/shBrushBash.js"></script>

<script type="text/javascript" src="./images/shBrushColdFusion.js"></script>

<script type="text/javascript" src="./images/shBrushCpp.js"></script>

<script type="text/javascript" src="./images/shBrushCSharp.js"></script>

<script type="text/javascript" src="./images/shBrushCss.js"></script>

<script type="text/javascript" src="./images/shBrushDelphi.js"></script>

<script type="text/javascript" src="./images/shBrushDiff.js"></script>

<script type="text/javascript" src="./images/shBrushErlang.js"></script>

<script type="text/javascript" src="./images/shBrushGroovy.js"></script>

<script type="text/javascript" src="./images/shBrushJava.js"></script>

<script type="text/javascript" src="./images/shBrushJavaFx.js"></script>

<script type="text/javascript" src="./images/shBrushJScript.js"></script>

<script type="text/javascript" src="./images/shBrushPerl.js"></script>

<script type="text/javascript" src="./images/shBrushPhp.js"></script>

<script type="text/javascript" src="./images/shBrushPlain.js"></script>

<script type="text/javascript" src="./images/shBrushPowerShell.js"></script>

<script type="text/javascript" src="./images/shBrushPython.js"></script>

<script type="text/javascript" src="./images/shBrushRuby.js"></script>

<script type="text/javascript" src="./images/shBrushSass.js"></script>

<script type="text/javascript" src="./images/shBrushScala.js"></script>

<script type="text/javascript" src="./images/shBrushSql.js"></script>

<script type="text/javascript" src="./images/shBrushVb.js"></script>

<script type="text/javascript" src="./images/shBrushXml.js"></script>

<link type="text/css" rel="stylesheet" href="./images/shCore.css"/>

<link type="text/css" rel="stylesheet" href="./images/shThemeDefault.css"/>

<script type="text/javascript">

 

/* jQuery 부분  */

jQuery.noConflict();  // 다른 라이브러리와 충돌을 방지한다.

jQuery(document).ready(function(){  // 문서가 모두 읽힌 후에 다음을 실행

    jQuery("blockquote").each( function() {  //blokquote가 사용한 태그

        if (jQuery(this).attr('class').substr(0,5)=='brush') 

        // 그중 클래스명이 brush로 시작하는 것을 찾아 적용

        {

            var temp = jQuery(this).html(); //  내용 복사

            temp = temp.replace(/\n/gi, "");

            temp = temp.replace(/<BR>/gi, "\n");

            temp = temp.replace(/<BR \/>/gi, "\n");

            //temp = '<pre class="'+ jQuery(this).attr('class') + '">'+temp+'</pre>'

            temp = '<script type="syntaxhighlighter" class="'+ jQuery(this).attr('class') + '"><![CDATA['+temp+']]><\/script>'

            jQuery(this).after(temp);   // 뒤에 새 작성된 pre 또는 script태그로 붙인다.

            jQuery(this).remove();         //  기존의 인용태그 삭제

        }

    });

 

    /* SyntaxHighlighter 부분 */

    SyntaxHighlighter.defaults['toolbar'] = false;    // 툴바 안 보기

    SyntaxHighlighter.all();

});

</script>



jQuery는 구글의 apis에서 가져다 오도록 했습니다. 현재 최신 버전이 1.4.4입니다.

그리고, 41번과 42번 줄에 보시면, pre태그와 script태그를 둘중 하나를 선택해서 사용 하시면 되는데..

여기 를 참고 하시고 선택해서 사용하세요.

저 같은 경우에는 script 태그를 선택 했습니다.

그리고 사용하는 방법은 매우 간단해 졌습니다.


텍스트 모드에서 붙여 넣기를 한 후,

인용구<Ctrl+Q>를 선택 하시면 됩니다.



그리고 HTML 편집 모드로 들어 가셔서 blockquote를 찾으셔서, 태그에 적당한 brush를 넣어 주시면, 코드가 깔끔하게 들어 갑니다.

<blockquote class="brush:html">

...

</blockquote>


그리고, 줄에 하일라이트를 넣고 싶거나, 상세 설정은


http://alexgorbatchev.com/SyntaxHighlighter/manual/configuration/


이 페이지 를 참고 하시면 됩니다. 


지원 문법


Brush nameBrush aliasesFile name
ActionScript3 as3, actionscript3shBrushAS3.js
Bash/shell bash, shellshBrushBash.js
ColdFusion cf, coldfusionshBrushColdFusion.js
C# c-sharp, csharpshBrushCSharp.js
C++ cpp, cshBrushCpp.js
CSS cssshBrushCss.js
Delphi delphi, pas, pascalshBrushDelphi.js
Diff diff, patchshBrushDiff.js
Erlang erl, erlangshBrushErlang.js
Groovy groovyshBrushGroovy.js
JavaScript js, jscript, javascriptshBrushJScript.js
Java javashBrushJava.js
JavaFX jfx, javafxshBrushJavaFX.js
Perl perl, plshBrushPerl.js
PHP phpshBrushPhp.js
Plain Text plain, textshBrushPlain.js
PowerShell ps, powershellshBrushPowerShell.js
Python py, pythonshBrushPython.js
Ruby rails, ror, rubyshBrushRuby.js
Scala scalashBrushScala.js
SQL sqlshBrushSql.js
Visual Basic vb, vbnetshBrushVb.js
XML xml, xhtml, xslt, html, xhtmlshBrushXml.js


참고 사이트


http://techbook.tistory.com/entry/tistory-highlight  : jQuery 부분은 여기의 내용을 참고 했습니다. 감사합니다.


이 포스팅에 사용된 버전


 syntaxhighlighter_3.0.83.zip

출처: http://icartsh.tistory.com/22


일단 Alt + 11키를 눌르거나   도구 -> 매크로 -> 매크로 IDE로 매크로 IDE를 실행시킴니다.

탐색기에서 MyMacros쪽에 추가 -> 모듈 추가로 새로운 매크로 파일을 생성후

Public Module Module1 여기 아래 부분에 매크로를 작성하시면 됨니다..

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
Imports System.IO '추가
 
 
Public Module Module1
    Public Sub SaveUtf8()
        Try
            DTE.ActiveDocument.Save()
 
            Dim fileName As String = DTE.ActiveDocument.FullName
            Dim input As New FileStream(fileName, FileMode.Open)
            Dim isUTF8 As Boolean = (input.ReadByte = &HEF And input.ReadByte = &HBB And input.ReadByte = &HBF)
            input.Close()
 
            If (Not isUTF8) Then
                Dim s As String = File.ReadAllText(fileName, System.Text.Encoding.Default)
                File.WriteAllText(fileName, s, System.Text.Encoding.UTF8)
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly, "UTF8로 바꾸는데 실패했습니다.")
        End Try
    End Sub
 
    Public Sub SaveReplaceEmpty()
        Try
            Dim result As vsFindResult
            result = DTE.Find.FindReplace(vsFindAction.vsFindActionReplaceAll, _
                                 ":b+$", _
                                 vsFindOptions.vsFindOptionsRegularExpression, _
                                 String.Empty, _
                                 vsFindTarget.vsFindTargetCurrentDocument, , , _
                                 vsFindResultsLocation.vsFindResultsNone)
 
            DTE.ActiveDocument.Save()
            If result = vsFindResult.vsFindResultReplaced Then
                DTE.ActiveDocument.Save()
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly, "공백 및 탭을 지우는데 실패했습니다.")
        End Try
    End Sub
End Module



위와 같은 함수 2개를 만들면 됨니다..


도구 -> 옵션-> 키보드 탭으로 가신후



MyMacros에 매크로를 추가했기때문에 my만 검색해도 아래와 같이 나오게 됨니다..

그런 후 원하시는 단축키를 지정해 주시면 됩니다.