레이블이 코드조각인 게시물을 표시합니다. 모든 게시물 표시
레이블이 코드조각인 게시물을 표시합니다. 모든 게시물 표시

2018년 3월 26일 월요일

유니티 리소스 폴더의 폰트 불러오기

코드 조각 기록

아래 폰트 경로에 존재하는 폰트 파일을 모두 불러와서 _lFontList 라는 리스트에 넣는다.
Assets/Recources/Fonts/



        UnityEngine.Object[] fileInfo = Resources.LoadAll("Fonts", typeof(Font));

        UnityEngine.Debug.LogWarning(fileInfo.Length);

        foreach (var file in fileInfo)
        {
            _lFontList.Add((Font)file);
        }

2017년 8월 28일 월요일

코드 조각 리스트<클래스>의 소팅 하기

평소에는 List<>.sort() 로 쉽게 정렬을 하지만,
직접 만든 클래스는 정렬이 어려워서 이럴 떄 사용할만한 코드 조각

public class BasicEntity
{
    public int Index = 0;
    public string Name = string.Empty;
    public float Value = 0f;
}

   // true 면 낮은 순부터 0 false 면 반대
    public List<BasicEntity> sortFilterEntity(List<BasicEntity> list, bool order)
    {
        List<BasicEntity> result = list;

        if (order)
        {
            result.Sort(delegate (BasicEntity A, BasicEntity B)
            {
                if (A.Index > B.Index) return 1;
                else if (A.Index < B.Index) return -1;
                return 0;
            });
        }
        else
        {
            result.Sort(delegate (BasicEntity A, BasicEntity B)
            {
                if (A.Index > B.Index) return -1;
                else if (A.Index < B.Index) return 1;
                return 0;
            });
        }

        for (int i = 0; i < result.Count; i++)
        {
            Debug.LogError(result[i].Name);
        }

        return result;
    }

2017년 4월 24일 월요일

일본의 샘플 코드에 자주 보이는 Hoge 의 의미. (메타구문변수명)

일본쪽 개발서나 개발 블로그를 참고하는 경우가 많은데,
이쪽 분들은 일본어를 로마자로 적어서 변수명 따위에 사용하는 경우가 많다.

대표적인 것이 name 이라는 변수가 있으면 namae 로 적는다던가.
(오타가 아닌 것... 일본어 名前 = 이름 = name 이다)

대부분 알아보는데 크게 문제는 없는데,
대충 무슨 뜻인지는 알겠는데, 사전에도 없는 이상한(?)게 있어서 오늘은 큰맘 먹고 알아보았다.

바로 "HOGE" 넌 뭐냐..

일단 일본어 사전을 검색해봤다.
비슷한게 안 나오네...
이외나 의외 아니면 그 외 아무거나 이런 뜻인줄 알았는데...

근처 일본인에게 도움을 청했다.

HOGE 가 뭡니까?!
대충 이런 느낌으로 쓰고 있는데요. 라며 샘플 코드 전달.

void Hoge()
{
    StartCoroutine(HogeProcess());
}

난 프로그래머가 아니라 잘 모르지만 알아볼게~ 라시던 분이 의외로 금방 답변을 해주셨다.

--------------------

「ほげほげ」の由来は、「hogehoge」というメタ構文変数です。メタ構文変数とは、サンプルプログラムなどで意味のない名前が必要な場合に利用される、「意味のない名前」のことです。

入力する文字列は何でもいいのだけれど、入力しなければエラーになっていまう…という場合に用いられたのが「hoge」もしくは「hogehoge」です。

"ほげほげ"의 유래는 "hogehoge"라는 메타 구문 변수입니다. 메타 구문 변수는 샘플 프로그램 등으로 의미가없는 이름이 필요한 경우에 사용되는 "의미없는 이름"입니다.

입력 문자열은 무엇이든 좋은 것이지만, 입력하지 않으면 에러가 되어버리는... 경우에 사용 된 것이 "hoge"또는 "hogehoge"입니다.

---------------------

흠흠 그렇군.
이제 뭔지 알았으니 조금 더 찾아봤다.

---------------------

プログラミング言語では識別子(変数関数などの名前のこと)を自由に定義できるが、サンプルプログラムなどでまったく意味の無い変数に適当な名前がなく困ってしまうことがある。しかしどんな名前でも構わないからといって「wikipe」などとつけると、そのプログラムを見た他の人はその変数に何の意味があるのかと悩むことになる。そのようなときに、「abcd」や「hoge」(ほげ)をはじめとするメタ構文変数を利用する。メタ構文変数はプログラマの間でサンプル用の意味が無い変数名であることが認知されているので無用な混乱が避けられるほか、書く側も苦労して名前をひねりだす必要がなくなる。

프로그래밍 언어에서 식별자 (변수 나 함수 등의 이름에 대한 것)을 자유롭게 정의 할 수 있지만, 샘플 프로그램 등에서 전혀 의미없는 변수에 적당한 이름이 없어서 곤란 해 버릴 수있다. 그러나 어떤 이름이라도 상관 없다해서 "wikipe"라고 쓰면 그 프로그램을 본 다른 사람은 그 변수에 무슨 의미가 있는지 고민하게된다. 그런 때, "abcd" 또는 "hoge"(호게)를 비롯한 메타 구문 변수를 이용한다. 메타 구문 변수는 프로그래머 사이에서 샘플에 대한 의미가없는 변수 이름 인 것으로 알려져 있기 때문에 불필요한 혼란을 피할 수 있으며, 쓰는 사람도 고생해서 이름을 쥐어짤 필요가 없어진다.

출처  위키피디아

------------------

역시 별거는 아니었는데, 알고나니 묵은 체증이 풀린 느낌이라 좋다. :D

근데 좀 배신감(?)이 드는 것은...
오히려 Hoge 가 무슨 의미인가 고민하게 되었던 내 입장에선 조금 억울하네... (하하하)

2017년 1월 23일 월요일

R Studio 로 주사위 6면체 2개의 기대값 계산해보기

R Studio 깔고 마땅히 쓸게 없어서 적당히 샘플을 올려본다.

최근에 만들고 있는 주사위 게임과 관련된 것을 해보았다.
(6면체 2개를 쓰는 TRPG 스타일의 게임... 올해 상반기에 완성할 수 있을까 ... ㅠㅠ)

주사위 6면체 2개를 굴려서 기대값을 구해보자.

# 주사위 2:12 (6면체 2개를 굴림)을 100회 굴려 평균 낸 것을, 10만번하여 결과값으로 저장 
> res <- replicate(100000, mean (sample(2:12, 100, replace = TRUE)))
# Histogram 함수
> hist(res)



주사위는 값이 단순해서 이걸로 충분한데, 좀 더 예쁘고 디테일하게 그리고 싶어서 아래의 패키지를 설치했다.

# 패키지 설치
> install.packages("ggplot2")
# 라이브러리 부르기
> library(ggplot2)

# ggplot을 이용하여 그래프 그리기
> dice <- data.frame(DICE = res)
> ggplot(dice, aes(x = DICE)) + geom_histogram(binwidth = .1, fill = "steelblue", colour="black", alpha = 0.5) + xlab("Expectation") + ylab("COUNT") + ggtitle("DICE 2:12, 100KAI, 100000")



경험적으로 학습적으로 주사위 2개를 굴리면 [5,6,7,8,9] 가 나올 확률이 좋다 라고 알고는 있었는데 이렇게 히스토그램으로 그려보면 또 느낌이 다르다.

R은 막연하게만 알고 잘 몰랐는데, 이런 계산들을 무척 빨리 해주는터라 빠르게 확인해보기에 좋은 것 같다. 

역시 알고 있는 것으로 끝내지 않고 직접 해보는게 좋다.

2017년 1월 5일 목요일

코드 조각 - Mesh 에서 Vertices 위치 가져오기 / 수정하기

Unity3D에서 Mesh 의 정점을 직접 컨트롤 할 일이 생겨서 찾아봤다.

만일 정해진 범위에서 애니메이션을 하려면 Maya 등에서 BlendShape를 이용해서 애니메이션을 만드는게 낫다.

------------------------------------------------------------------------

// MeshFilter 로 부터 Mesh 를 가져와서 여기에 넣는다.
private mesh _mesh;

// 잦은 업데이트를 위한 mesh 최적화
// https://docs.unity3d.com/kr/current/ScriptReference/Mesh.MarkDynamic.html

_mesh.MarkDynamic();

// _mesh.vertices 에서 모든 vertices의 Vector3 좌표를 가져오거나 넣을 수 있다.

// 바뀐 Mesh vertices 위치 재계산
// https://docs.unity3d.com/kr/current/ScriptReference/Mesh.RecalculateBounds.html

_mesh.RecalculateBounds();