프로그래밍/유니티2019. 2. 13. 12:38

http://tsubakit1.hateblo.jp/entry/2019/02/04/024231


https://qiita.com/taoru/items/c9c5461912ae0af94ed0


https://github.com/kanitaoru/TMProNonAllocUtil

'프로그래밍 > 유니티' 카테고리의 다른 글

코루틴 심화  (0) 2019.02.22
C# foreach 가비지  (0) 2019.02.22
인스펙터를 어트리뷰트로 예쁘게 만들어주기  (0) 2019.02.13
textmeshpro 최적화  (0) 2019.02.08
TextMeshPro 고수  (0) 2019.01.22
Posted by JinFluenza
프로그래밍/유니티2019. 2. 13. 10:15

https://github.com/dbrizov/NaughtyAttributes

'프로그래밍 > 유니티' 카테고리의 다른 글

C# foreach 가비지  (0) 2019.02.22
TextMeshPro 가비지 최적화  (0) 2019.02.13
textmeshpro 최적화  (0) 2019.02.08
TextMeshPro 고수  (0) 2019.01.22
런타임 아틀라싱  (0) 2018.12.14
Posted by JinFluenza
프로그래밍/유니티2019. 2. 8. 11:37

https://qiita.com/taoru/items/c9c5461912ae0af94ed0 가비지 생성 X

'프로그래밍 > 유니티' 카테고리의 다른 글

TextMeshPro 가비지 최적화  (0) 2019.02.13
인스펙터를 어트리뷰트로 예쁘게 만들어주기  (0) 2019.02.13
TextMeshPro 고수  (0) 2019.01.22
런타임 아틀라싱  (0) 2018.12.14
커브 러프 공식  (0) 2018.12.11
Posted by JinFluenza
프로그래밍/유니티2019. 1. 22. 18:42

https://www.youtube.com/user/Zolran

'프로그래밍 > 유니티' 카테고리의 다른 글

인스펙터를 어트리뷰트로 예쁘게 만들어주기  (0) 2019.02.13
textmeshpro 최적화  (0) 2019.02.08
런타임 아틀라싱  (0) 2018.12.14
커브 러프 공식  (0) 2018.12.11
Transform 최적화  (0) 2018.12.02
Posted by JinFluenza
프로그래밍/수학2019. 1. 22. 10:57

 public enum TKSwipeDirection

    {

        Left = (1 << 0),

        Right = (1 << 1),

        Up = (1 << 2),

        Down = (1 << 3),


        UpLeft = (1 << 4),

        DownLeft = (1 << 5),

        UpRight = (1 << 6),

        DownRight = (1 << 7),


        Horizontal = (Left | Right),

        Vertical = (Up | Down),

        Cardinal = (Horizontal | Vertical),


        DiagonalUp = (UpLeft | UpRight),

        DiagonalDown = (DownLeft | DownRight),

        DiagonalLeft = (UpLeft | DownLeft),

        DiagonalRight = (UpRight | DownRight),

        Diagonal = (DiagonalUp | DiagonalDown),


        RightSide = (Right | DiagonalRight),

        LeftSide = (Left | DiagonalLeft),

        TopSide = (Up | DiagonalUp),

        BottomSide = (Down | DiagonalDown),


        All = (Horizontal | Vertical | Diagonal)

    }

'프로그래밍 > 수학' 카테고리의 다른 글

좌표계 (직교,극)  (0) 2018.03.09
Posted by JinFluenza
프로그래밍/기타2018. 12. 17. 11:59

https://developers.cyberagent.co.jp/blog/archives/4262/#mvp_pattern

'프로그래밍 > 기타' 카테고리의 다른 글

개인정보취급방침 (Light Block)  (0) 2019.10.24
ipv4 ipv6 차이점  (0) 2019.02.15
vs 단축키  (0) 2018.12.14
unity svn ignore  (0) 2018.05.20
IOS cocoapods  (0) 2018.05.12
Posted by JinFluenza
프로그래밍/기타2018. 12. 14. 12:17

이름바꾸기 컨트롤 + RR

라인으로 이동 컨트롤 + G

'프로그래밍 > 기타' 카테고리의 다른 글

ipv4 ipv6 차이점  (0) 2019.02.15
MVC 패턴  (0) 2018.12.17
unity svn ignore  (0) 2018.05.20
IOS cocoapods  (0) 2018.05.12
Visualgo  (0) 2018.03.26
Posted by JinFluenza
프로그래밍/유니티2018. 12. 14. 10:19

https://forum.unity.com/threads/unity-5-atlas-at-runtime-basic-solution.310397/

'프로그래밍 > 유니티' 카테고리의 다른 글

textmeshpro 최적화  (0) 2019.02.08
TextMeshPro 고수  (0) 2019.01.22
커브 러프 공식  (0) 2018.12.11
Transform 최적화  (0) 2018.12.02
드로우콜 셋페스콜  (0) 2018.10.24
Posted by JinFluenza
프로그래밍/유니티2018. 12. 11. 21:08

using System;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;



public class HomingObjectUI : MonoBehaviour

{


   // public bool worldSpace = true;

    public UICurveSet curveSet;

    private float _playTime = 0f;


    private Transform _transform;

    private float _tick = 0f;


    private Vector3 _from;

    private Vector3 _to;


    private bool isPlay = false;

    private Action onFinished;


    public void Initialize(Vector3 startTr, Vector3 endTr, float duration, System.Action endCallBack)

    {

        _transform = this.transform;


        this.gameObject.SetActive(true);


        this.transform.position = startTr;


        _from = startTr;


        _to = endTr;


        curveSet.duration = duration;


        onFinished = endCallBack;


        Ready();


        isPlay = true;

    }


    public void Ready()

    {

       

        _playTime = 0;

        if (this.curveSet.curve_default != null)

            _tick = 1f / (this.curveSet.duration / Time.fixedDeltaTime);

    }


    private void FixedUpdate()

    {

        if (isPlay)

        {

            if (_playTime < 1)

            {

                _playTime += _tick;

                if (_playTime >= 1)

                    _playTime = 1;


                float x = (_from.x * (1f - curveSet.curve_default.Evaluate(_playTime))) + (_to.x * curveSet.curve_default.Evaluate(_playTime)) + curveSet.curve_x.Evaluate(_playTime);

                float y = (_from.y * (1f - curveSet.curve_default.Evaluate(_playTime))) + (_to.y * curveSet.curve_default.Evaluate(_playTime)) + curveSet.curve_y.Evaluate(_playTime);

                float z = (_from.z * (1f - curveSet.curve_default.Evaluate(_playTime))) + (_to.z * curveSet.curve_default.Evaluate(_playTime)) + curveSet.curve_z.Evaluate(_playTime);


                //if (worldSpace)

                 _transform.position = new Vector3(x, y, z);


                //_transform.position = Vector3.Lerp(_from,_to,_playTime);

                //else

                //    _transform.localPosition = new Vector3(x, y, z);

            }

            else

            {

                isPlay = false;

                if (this.onFinished != null)

                    this.onFinished();

            }

        }

    }


}



'프로그래밍 > 유니티' 카테고리의 다른 글

TextMeshPro 고수  (0) 2019.01.22
런타임 아틀라싱  (0) 2018.12.14
Transform 최적화  (0) 2018.12.02
드로우콜 셋페스콜  (0) 2018.10.24
파티클로 잔상 만들기  (0) 2018.09.11
Posted by JinFluenza
프로그래밍/유니티2018. 12. 2. 11:43

-어디선가 퍼옴-



tranform 모든게임오브젝트에 기본적으로 존재.


트랜스폼 변경시 : C++ : OnTransformChanged 메세지를 보냄


부모가 바뀌면 더 많은 메세지를 보냄

C# : OnBeforeTransformParentChanged

C# : OnTransformParentChanged

심지어 계층구조인 경우 부모가 Transform변경이 일어나면 자식들의 Transform에도 영향을 끼친다.


메세지를 호출하는 대표적인 세가지.

position rotation scale 

Animator Physics.


1 change = 1 message!


Physics 컴포넌트는 피직스 씬에도 영향을 줌.


그리고 수 많은 유니티 내부 컴포넌트 들에 영향을 끼침.!

Physics,Renderers,UnityUI


void Update()

{

 트랜스폼 포지션 += 벡터

 트랜스폼 로테이션 +=쿼터니언 오일러

}

이런식의 변화는 두번 메세지가 발생해서 좋지 않다!

따라서 아래와 같이

void Update()

{

transform.SetPositionAndRotation(벡터,벡터);

}

이렇게 하면 메세지가 한번만 발생해서 이론상 두배 빨라짐!


유니티짱은 트랜스폼이 150개가 있는데. 캐릭터가 100개면 15000개의 트랜스폼이 변경이 일어남.

따라서 캐릭터는 모델임포트 세팅에 Rig부분에 OptimizeGameObjects 옵션을 체크하는게 좋음.

이 옵션을 켜면 스키닝 연산을 멀티스레드로 돌리게 됨. (스키닝 연산이 빨라짐.)

Unity2017버전 부터는 옵션을 켜지 않아도 기본적으로 스키닝 연산은 멀티스레딩임.


근데 이경우에 문제는.. 캐릭터가 투구를 쓰거나, 방패를 끼거나 이런 경우에 붙이 오브젝트가 없어서 안됨.

이럴 경우에는 옵션에 들어가서 예외 설정을 해 줄수 있음. 그럼 어태치 가능한 트랜스폼이 생김!


'프로그래밍 > 유니티' 카테고리의 다른 글

런타임 아틀라싱  (0) 2018.12.14
커브 러프 공식  (0) 2018.12.11
드로우콜 셋페스콜  (0) 2018.10.24
파티클로 잔상 만들기  (0) 2018.09.11
다국어 폰트  (0) 2018.08.29
Posted by JinFluenza