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

카테고리

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

크롬 글꼴 깨짐 방지 (=크롬 글자 흐림 제거)


letter-spacing:-1px 에서 영문 폰트 작은 글씨가 겹쳐 흐릿하게 보이는 증상이 있을 때 아래 팁을 적용하면 해결 됨.


1. 크롬을 실행 후, URL 주소창에 
chrome://flags  입력 후 접속   

2. Ctrl + F 눌러 찾기 창을 띄운 후,  
DirectWrite 입력 후 확인 버튼 클릭

3. 사용 버튼 클릭해 기능을 활성화 시킴. (즉, 배경이 하얗고 사용중지 글자가 보이게 바꾸면 됨)

4. 페이지 하단의 지금 다시 시작 버튼 클릭 






출처 : http://www.homzzang.com/bbs/board.php?bo_table=info&wr_id=57

반응형
Posted by blueasa
, |

Color Hex

Link / 2015. 3. 23. 17:37


링크 : http://www.color-hex.com/

반응형
Posted by blueasa
, |

홈페이지 : http://www.lingoes.net/


사용 참조 : http://rainingfog.tistory.com/82


컴퓨터를 사용할 땐 항상 사용하는 온/오프라인 사전 프로그램 Lingoes


사전도 원하는대로 골라서 추가하고, 단축키로 필요할 때 볼 수 있고,


무엇보다 프리!!



[Lingoes 2.9.2 + 내가 사용하는 사전들(한/영, 영/한]

lingoes_portable_2.9.2.z01


lingoes_portable_2.9.2.z02


lingoes_portable_2.9.2.z03


lingoes_portable_2.9.2.z04


lingoes_portable_2.9.2.z05


lingoes_portable_2.9.2.z06


lingoes_portable_2.9.2.z07


lingoes_portable_2.9.2.z08


lingoes_portable_2.9.2.z09


lingoes_portable_2.9.2.zip


반응형
Posted by blueasa
, |

[링크] 좋은 쌀 사는 법

Etc / 2015. 3. 21. 20:47


링크 : http://www.todayhumor.co.kr/board/view.php?table=bestofbest&no=200961&s_no=200961&page=1







반응형
Posted by blueasa
, |

"Infinite Scrolling" for Unity3D Using NGUI's UIScrollView (1st attempt)

For latest update please check this post instead 
I've been using NGUI for UI related work on my Unity project for the past few weeks and it is a breath of fresh air when compared to the stock UnityGUI (OnGUI()).

Part of my project relate to display a relatively large amount of data dynamically (well not very large but in thousands) and instantiating a prefab for each data element didn't seem like a good idea to me :-)

So instead I decided to add some logic to do a scroll view with fixed pool of items that I reuse and position according to the direction of the scroll and get it fed with the correct data. 

Although I am sure that there are existing solutions I decided to do my own.

The logic so far is built using UIGrid with fixed cell height for the moment (not well suited for UITable with different cell height) and the panel is using soft clip. the Scroll view is using momentum only (Spring physics breaks my current logic for some reason)

Initialization steps: 
  1. Pool size is calculated using the cell height against the panel height plus some buffer (currently I am using a buffer of 4 list items)
  2. List items' pool is instantiated with corresponding data from the data list
  3. A map is maintained to keep track of which data item are used in which list items
While Scrolling:
  1. Any item that turns a visible from an invisible state will notify the main controller
  2. We check the direction of the scroll based on which item is visible (e.g. if the next item is visible means that we are dragging upwards)
  3. based on the direction we reuse the items at the top or the bottom of the list accordingly (e.g. if direction is up the top item moves to the bottom and get populated with data from the corresponding data element)

 

 This is a first attempt and further posts will follow as the logic evolve.

==UPDATE==
I am in the process of making this component available as open source.
Meanwhile we've launched a free app on Android that uses it called Avatar Messenger
==UPDATE 2==
 The component is available as open source
https://github.com/OrangeLabsUK/InfiniteList_NGUI



[파일]

InfiniteList_NGUI-master.zip



출처 : http://www.geekyhamster.com/2013/12/infinite-scrolling-for-unity3d-using.html

반응형

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

NGUI UI의 현재 위치 표시하기[수정중]  (0) 2015.05.08
NGUI 다양한 해상도 대응하기  (2) 2015.04.21
NGUI: Symbols & Emoticons  (0) 2015.02.12
NGUI Emoticons  (0) 2015.02.12
NGUI UILabel로 Emoticon 넣기..  (0) 2015.02.12
Posted by blueasa
, |


링크 : http://azdesigntm.com/423


이런걸 나인패치(9-Patch)라고 부르는구나..


단어 의미가 뭔지 궁금해서 찾아봄..


쓰기만 했지 이런 명칭이 있는진 몰랐네..

반응형
Posted by blueasa
, |


Link : http://forum.unity3d.com/threads/the-asset-bundle-cant-be-loaded.240015/

반응형
Posted by blueasa
, |

Link : http://www.todayhumor.co.kr/board/view.php?table=humorbest&no=1032135



예전부터 가끔 드는 생각이었는데..

이젠 무조건 아니라고 안보고 기피한다고 될 문제는 아닌 것 같네요.

방송에서도 일베용어를 알고 일부러 쓰는건지, 모르고 그냥 유행타니 막 쓰는건지 의문이 드는 단어들이 가끔 나왔었는데..

나라는 부모를 바쁘게 해서(맞벌이) 자식을 가르칠 여유도 없게 만들고 아이들은 학교에서 이상한 것에 물들고..에흠..


P.s. 일베용어뿐만 아니라 욕도 뜻을 알고 쓰는건지 궁금할 때가 가끔 있는거보면,
     욕도 배우고나서 안쓰는 방향으로 가야되지 않나 싶네요.


반응형
Posted by blueasa
, |

timeScale Lerp – Custom Time Manager

By now I need a timeScale Lerp and this need to be Time.deltaTime independent so, for anyone who needs this too, here’s what I’ve got (C#). You can also use it to create slow motion effects and control the play /pause of your game (assuming that you are using a Time.timeScale dependent approach):

You cal also get this code at GitHub

/// <summary>
/// Time Manager.
/// Time.deltaTime independent Time.timeScale Lerp.
/// Author: Fabio Paes Pedro
/// </summary>
///
/// 

using UnityEngine;
using System.Collections;

public class CustomTimeManager : MonoBehaviour
{
    /// <summary>
    /// CustomTimeManager is Paused or not
    /// </summary>
    [SerializeField]
    private bool _isPaused = false;
    /// <summary>
    /// CustomTimeManager is Fading (from _minScale to _scale or vice-versa)
    /// </summary>
    [SerializeField]
    private bool _isFading = false;
    /// <summary>
    /// CustomTimeManager will pause after fading (is going from _scale to _minScale)
    /// </summary>
    [SerializeField]
    private bool _willPause = false;

    [SerializeField]
    private float _scale = 1f;
    private float _fadeToScaleDifference = 0f;
    private float _scaleToFade = 0f;
    [SerializeField]
    private float _deltaTime = 0f;
    private float _lastTime = 0f;
    private float _maxScale = 3f;
    private float _minScale = 0f;
    private bool _fadeToScaleIsGreater = false;



    #region PseudoSingleton
    private static CustomTimeManager _instance;
    public static CustomTimeManager Instance
    {
        get
        {
            return _instance;
        }
    }
    void Awake()
    {
        if (_instance != null) Debug.LogError("There's another instance of " + this + " already");
        _instance = this;
    }
    void OnDestroy()
    {
        _instance = null;
    }
    #endregion


    void Start()
    {
        Scale = Time.timeScale;
        StartCoroutine("UpdateDeltaTime");
    }

    public bool WillPause
    {
        get
        {
            return _willPause;
        }
    }

    public bool IsFading
    {
        get
        {
            return _isFading;
        }
    }

    public bool IsPaused
    {
        get
        {
            return _isPaused;
        }
    }


    /// <summary>
    /// Time.timeScale independent deltaTime
    /// </summary>
    /// <value>
    /// time.timeScale independent Delta Time
    /// </value>
    public float DeltaTime
    {
        get
        {
            return _deltaTime;
        }
    }

    /// <summary>
    /// Getter and Setter for the CustomTimeManager Scale (time.timeScale). This will set IsPaused to true automatically if the scale == 0f
    /// </summary>
    /// <value>
    /// Scale (Time.timeScale)
    /// </value>
    public float Scale
    {
        get
        {
            return _scale;
        }
        set
        {
            _scale = value;
            _scale = _scale < _minScale ? _minScale : _scale > _maxScale ? _maxScale : _scale;
            Time.timeScale = _scale;
            _isPaused = _scale <= 0.001f;
            if (_isPaused)
            {
                _scale = 0f;
                _willPause = false;
            }
        }
    }

    /// <summary>
    /// Pause toggle (Changes the "IsPaused" flag from true to false and vice-versa)
    /// </summary>
    /// </param>
    /// <param name='time'>
    /// Time until Pause or Play
    /// </param>
    /// <param name='playScale'>
    /// Play scale.
    /// </param>
    public void TogglePause(float time = 0f, float playScale = -1f)
    {
        StopStepper();
        // WillPause == true means that a "Pause" was already called: this will make "WillPause" change to false and call "Play" function. 
        // Else just toggle.
        _willPause = _willPause == true ? false : !_isPaused;
        if (_willPause)
        {
            Pause(time);
        }
        else
        {
            Play(time, playScale);
        }
    }

    void StopStepper()
    {
        _instance.StopCoroutine("FadeStepper");
    }

    /// <summary>
    /// CustomTimeManager Pause
    /// </summary>
    /// <param name='time'>Fading time until Time.timeScale == 0f</param>
    public void Pause(float time = 0f)
    {
        if (Mathf.Approximately(time, 0f))
        {
            _willPause = false;
            _instance.StopCoroutine("FadeStepper");
            Scale = 0f;
        }
        else
        {
            _willPause = true;
            FadeTo(0f, time);
        }
    }

    /// <summary>
    /// CustomTimeManager Play 
    /// </summary>
    /// <param name='time'>
    /// Fading time until Time.timeScale == scale param
    /// </param>
    /// <param name='scale'>
    /// Final scale for Time.timeScale
    /// </param>
    public void Play(float time = 0f, float scale = 1f)
    {
        if (Mathf.Approximately(time, 0f))
        {
            _instance.StopCoroutine("FadeStepper");
            Scale = scale;
        }
        else
        {
            FadeTo(scale, time);
        }
    }

    /// <summary>
    /// CustomTimeManager Scale Fading.
    /// </summary>
    /// <param name='scale'>
    /// The final Time.timeScale
    /// </param>
    /// <param name='time'>
    /// The transition time to reach the desired scale
    /// </param>
    public void FadeTo(float scale, float time)
    {
        _instance.StopCoroutine("FadeStepper");
        _scaleToFade = scale;
        _fadeToScaleDifference = scale - _scale;
        _fadeToScaleIsGreater = _fadeToScaleDifference > 0f;
        float scalePerFrame = _fadeToScaleDifference / time;
        _instance.StartCoroutine("FadeStepper", scalePerFrame);
    }

    /// <summary>
    /// Coroutine to fade the Unity's timeScale
    /// </summary>
    IEnumerator FadeStepper(float scalePerFrame)
    {
        bool achieved = false;
        _isFading = true;
        while (achieved == false)
        {
            Scale += scalePerFrame * _deltaTime;
            if (_fadeToScaleIsGreater)
            {
                achieved = _scale >= _scaleToFade;
            }
            else
            {
                achieved = _scale <= _scaleToFade;
            }
            yield return null;
        }
        Scale = _scaleToFade;
        _isFading = false;
        _willPause = false;
    }

    /// <summary>
    /// Updating our internal _deltaTime
    /// </summary>
    IEnumerator UpdateDeltaTime()
    {
        while (true)
        {
            float timeSinceStartup = Time.realtimeSinceStartup;
            _deltaTime = timeSinceStartup - _lastTime;
            _lastTime = timeSinceStartup;
            yield return null;
        }
    }

}



출처 : http://fliperamma.com/timescale-lerp-custom-time-manager/

반응형
Posted by blueasa
, |
윈도우 7 에서 S-ATA 모드 변경하기 : IDE to AHCI


윈도우 7 에는 S-ATA 의 드라이버로 IDE 호환 드라이버는 물론 AHCI 드라이버도 내장되어 있기 때문에, IDE 모드에서 윈도우 7 을 설치하였다고 할 지라도 별다른 드라이버의 설치나 윈도우의 재설치 없이, 곧바로 S-ATA 의 모드를 IDE 모드에서 AHCI 모드로 변경하는 것이 가능합니다. 단! 그럴려면 먼저 윈도우에게 이제부터는 AHCI 드라이버도 사용할 것이라고 알려줘야 하지요. 그것은 간단한 레지스트리 편집으로 가능합니다. 전체적인 작업은 아래와 같습니다.

01. 시작 -> 실행 -> regedit 를 통해 레지스트리 편집기를 실행합니다.

02. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci] 키에서 Start 값을 찾은 후 값의 데이터를 0 으로 바꿔줍니다.



03. 시스템을 재부팅한 후 CMOS 셋업에서 S-ATA 의 모드를 AHCI 모드로 변경합니다.



04. 윈도우로 진입 후 장치 관리자[Windows Key + Pause -> 장치 관리자]에서 IDE ATA/ATAPI 컨트롤러가 표준 AHCI 1.0 Serial ATA 컨트롤러로 변경되었는지 확인합니다.



05. AHCI 모드로의 전환이 완료되었습니다. 이제 자신의 시스템에 맞는 칩셋 드라이버(또는 별도의 S-ATA 드라이브)를 설치하여 사용하시면 됩니다.



간단하죠? 만약에 이렇게 S-ATA 의 모드를 AHCI 로 전환하여 사용하다가 다시 IDE 모드로 돌아가고 싶다면, 별다른 작업없이 곧바로 S-ATA 를 IDE 모드로 변경한 후 그대로 윈도우로 부팅하면 됩니다. 이렇게 한 번 IDE -> AHCI 로 전환한 경우 이후부터는 보통 아무런 문제없이 IDE <-> AHCI 모드로 원할 때마다 바로 바로 전환할 수 있습니다.






윈도우 7 에서 S-ATA 모드 변경하기 : AHCI to IDE


마찬가지의 이유로 AHCI 모드로 윈도우 7 을 설치하였다고 할 지라도 위와 같이 별다른 드라이버의 설치나 윈도우의 재설치 없이 S-ATA 의 모드를 IDE 모드로 변경하는 것이 가능합니다. 단! 이번엔 반대로 윈도우에게 이제부터는 IDE 호환 드라이버도 사용할 것이라고 알려주는 것만 다릅니다. 마찬가지로 이 작업은 간단한 레지스트리 편집으로 가능합니다. 전체적인 작업은 아래와 같습니다.

01. 시작 -> 실행 -> regedit 를 통해 레지스트리 편집기를 실행합니다.

02. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\pciide] 키에서 Start 값을 찾은 후 값의 데이터를 0 으로 바꿔줍니다. [IDE -> AHCI 때와 키가 다릅니다. 주의하세요.]



03. 시스템을 재부팅한 후 CMOS 셋업에서 S-ATA 의 모드를 IDE 모드로 변경합니다.



04. 윈도우로 진입 후 장치 관리자[Windows Key + Pause -> 장치 관리자]에서 IDE ATA/ATAPI 컨트롤러가 표준 이중 채널 PCI IDE 컨트롤러로 변경되었는지 확인합니다.



05. IDE 모드로의 전환이 완료되었습니다. 이제 자신의 시스템에 맞는 칩셋 드라이버(또는 별도의 S-ATA 드라이브)를 설치하여 사용하시면 됩니다.



마찬가지로 이렇게 한 번 IDE -> AHCI 로 전환한 경우 이후부터는 별다른 설정 없이 곧바로 IDE <-> AHCI 모드로 원할 때마다 바로 바로 전환할 수 있습니다.






윈도우 7 에서 S-ATA 모드 변경하기 정리


1. 배치 파일

참고로 아래는 이 글에서 설명한 레지스트리 편집 작업을 간편하게 할 수 있도록 만든 배치 파일입니다. 실제로 작업하실 땐 레지스트리 부분은 아래의 배치 파일로 하시면 될 듯 하네요.


배치 파일은 사실 위와 같은 이유로 단순하게 msahci 와 pciide 의 Start 값을 모두 0 으로 설정하면 되지만, 그냥 AHCI 전환 때와 IDE 전환 때를 나눠서 작업하도록 만들었습니다. 그리고 해당 배치 파일은 윈도우 7 에서만 사용해야 하기 때문에 윈도우 7 에서만 작동하도록 하였습니다.



2. 윈도우 7 의 S-ATA 모드 변경 레지스트리의 이해

간단하게 이번 글에 대해서 이야기를 더 해보겠습니다. 윈도우 7 을 IDE 모드로 설치한 경우 관련된 레지스트리는 아래와 같이 설정됩니다.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci]
"Start"=dword:00000003

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\pciide]
"Start"=dword:00000000



반대로 윈도우 7 을 AHCI 모드로 설치한 경우 관련된 레지스트리는 아래와 같이 설정됩니다.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci]
"Start"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\pciide]
"Start"=dword:00000003



즉, 현재 사용 중인 S-ATA 모드에 해당하는 키의 Start 값 데이터가 0 이 되고, 반대 키의 Start 값 데이터가 3 이 되는 것이죠. 모드 전환을 할 때는 이제 반대 키의 Start 값 데이터를 0 으로 바꿔주어 해당 드라이버도 사용할 것임을 알려주는 겁니다. 이 때 현재 사용 중인 드라이버에 해당하는 키의 Start 값 데이터는 굳이 3 으로 변경할 필요는 없습니다.

고로 msahci 키와 pciide 키의 Start 값의 데이터를 모두 0 으로 만들어주면 언제든지 S-ATA 의 모드를 원하는 대로 설정할 수 있게 되는 겁니다. 간단하죠? 또한 이런 식으로 S-ATA 모드를 전환하여 양쪽 모두에 S-ATA 드라이버를 설치해두면 모드에 맞춰 자동으로 해당 드라이버가 적용됩니다. 뭐 사실 그렇게까지 크게 필요는 없어 보이지만요. ^^;


마지막으로 이번 글을 작성하면서 실제로 제 시스템에서 IDE 상태와 AHCI 상태에서 각각 윈도우를 설치한 후, 윈도우 기본 내장 드라이버 상태, 칩셋 드라이버를 설치한 상태, 보드가 인텔인지라 AHCI 일 때는 IRST 까지 설치한 상태, 이렇게 각각의 상태를 설정해놓고, 글에서 언급한 레지스트리의 변경만을 통해 AHCI <-> IDE 모드 전환을 하고, 다시 원래의 모드로 전환하는 테스트를, 반대 값만 0 으로 활성, 반대 값을 0 으로 활성 현재 값을 3 으로 비활성의 테스트를 모두 진행해보았지만, 그 어떤 경우에서도 별다른 문제를 발견하지 못했습니다. 그리고 추가로 검색을 해보아도 동일한 방법으로 문제가 생겼다는 다른 분들의 사례도 딱히 없는 것으로 보아 윈도우 7 에서는 오늘 알려드린 내용만으로도 별 문제가 없을 듯 합니다.

이게 원래 알려진지도 굉장히 오래된 팁이고, 그동안 별다른 문제가 있다는 이야기도 없었기에, 사실 이렇게까지 테스트를 진행해볼만한 글이 아닌데 얼떨결에 하다보니까 그렇게 되었네요. 이상입니다. ㅡㅡ;




출처 : http://cappleblog.co.kr/527

반응형
Posted by blueasa
, |