반응형

소켓이란 ?


- 대상이 멀리 떨어져 있기 때문에 소프트웨어 차원에서 호스트들간에 연결해주는 장치가 필요하고 이러한 기능을 해주는 장치를 소켓(socket)이라고 합니다. 

- TCP , UDP 를 간단하게 다루기 위한 통신 API 이며, 통신의 endPoint (극점)이다.

  간단히 말해 상대와 나를 연결해주는 통로 같은 존재, 전화기? 같은 존재이다.





* TCP 와 UDP 차이


  • TCP(Transmission Control Protocol) 는 두 프로그램 간에 처음 시작될 때부터 끝날 때까지 계속 연결을 유지하는 연결지향(Connection oriented) 방식으로 전화와 비유할 수 있습니다.

 

  • UDP(User Datagram Protocol) 는 명시적으로 연결을 설정하지 않고 데이터를 보내는 방식으로 우편물에 비유할 수 있습니다. 보낸 데이터가 제대로 갔는지, 순서대로 갔는지 동의 여부에 대해 전혀 신경쓰지 않는 신뢰성이 결여된 프로토콜 입니다.  TCP처럼 연결을 하고 끊는 번거로운 작업이 필요 없고, TCP보다 빠르며 데이터의 순서가 별로 중요하지 않고 패킷의 일부가 손상되어도 큰 영양을 미치지 않는 음성이나 영상 데이터를 전송할때 많이 이용되어 집니다.UDP은 메시지의 크기에 약간의 제한이 있으며 메시지의 확실한 전달 역시 보장하지 않으며 통신 중 데이터를 잃어버려도 오류가 발생하지 않습니다.

반응형

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

[Socket] 소켓클라이언트 구현  (0) 2018.12.18
[Socket] Lock문  (0) 2018.12.18
[Socket] 소켓 메서드관련 설명  (0) 2018.12.14
반응형

Unity ugui로 스킬쿨타임 간단 구현 하겟습니다.









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
bool isCharging = false;
    float nowDelayTime = 0;
    public void Chk_SkillcoolTime()
    {
        User_Abillity abil = UserdataManager.Instance.user.user_Abillity;
        text_skillLv.text = string.Format("Skill\nLv.{0}", abil.SkillLv);
 
        if (!isCharging)
            StartCoroutine(ChargeSkill(abil));
        else
            nowDelayTime = 0;
    }
 
    IEnumerator ChargeSkill(User_Abillity _abil)
    {
        
        
 
        while (_abil.SkillLv <= 2)
        {
            isCharging = true;
            nowDelayTime += Time.deltaTime;
 
            if (nowDelayTime >= _abil.SkillChargeCoolTime)
            {
                nowDelayTime = 0;
                _abil.SkillLv++;
 
                if (_abil.SkillLv == 3)
                    isCharging = false;
 
                text_skillLv.text = string.Format("Skill\nLv.{0}", _abil.SkillLv);
 
            }
            else
            {
                image_skillCooltime.fillAmount = nowDelayTime / _abil.SkillChargeCoolTime;
            }
 
            yield return null;
        }
    }
 
cs


반응형
반응형

안녕하세요,


버그/문의 이메일 기능 하실때 메일넣기 기능 이에요


제목 ,바디 내용 아래와 같이 적고 Application.OpenUrl() 하시면 제목과 바디내용이 적힌 이메일을 보내는 인터넷창이 뜰거에요 


디바이스 에서는 웹사이트에 맞게 (네이버, 지메일 등등) 작성되서 해당 앱에 보이시게 될거에요


void sendMail 

    string mailto = "asdsad@asdsad.com"; 
    string subject = EscapeURL("제목이에요"); 
    string body = EscapeURL("바디 내용"); 
  
    Application.OpenURL("mailto:" + mailto + "?subject=" + subject + "&body=" + body); 

 string EscapeURL(string url) 

    return WWW.EscapeURL(url).Replace("+", "%20"); 
}



이상입니다.

반응형
반응형


안녕하세요~


3D 캐릭터 모델 가지고 에니메이션 중에 상체 움직이기 (본 움직이기)를 하고 싶은경우가 있는데요 

저같은경우 FPS 개발중에서 총을 하늘이나 바닥으로 향할떄 상체가 위쪽이나 아래쪽으로 향하게 혹은 
허리를 굽혀지게 하고 싶었는데요 


아래와 사진과 같이 캐릭터 모델 FBX 파일을 눌시면 아바타를 찾을수 있습니다. 아바타를 눌러보시면 configure Avatar 를 찾을수 있어요 
(단, 캐릭터 모델이 Humonoid 이어야 합니다.)










아래 사진과같이 제가 선택한 본이름을 확인할수 있는데요 

휴머노이드의 Upper Chest 해당하는 부분이 Bip01 Spine2 라는걸 알수가 있네요 




이렇게 에니메이션중 움직일 본이름을 확인한 후


스크립트로 가셔서 제어하시면 됩니다. 



아래 스크립트 한번볼게요~~~







void Start()

{

animator = GetComponent<Animator>();

if (animator)

playerChestTr = animator.GetBoneTransform(HumanBodyBones.UpperChest); // 해당 본의 transform 가져오기

}


public void LateUpdate()

{

Operation_boneRotation();

}



Vector3 ChestOffset = new Vector3(0, -40, -100);

Vector3 ChestDir = new Vector3();

void Operation_boneRotation()

{

//카메라가 보고있는 방향

ChestDir = mainCameraTr.position + mainCameraTr.forward * 50f;

playerChestTr.LookAt(ChestDir); //상체를 카메라 보는방향으로 보기

playerChestTr.rotation = playerChestTr.rotation * Quaternion.Euler(ChestOffset); // 상체가 꺽여 잇어 상체로테이션을 보정하기 

}






위 코드를 보시면 Animator 컴포넌트로부터 해당 본부분의 transform를 가져올수가 있습니다.

 =>playerChestTr = animator.GetBoneTransform(HumanBodyBones.UpperChest);


그리고 Update를 통해서 카메라 보는방향 (저같은경우 FPS 게임이라 카메라 보는방향으로 움직여야해서  카메라방향으로 상체를 움직이도록 햇습니다)

으로 상체를 움직이도록 햇습니다.


여기서 중요한게 LateUpdate() 로 하셔야 적용이되고 본이 움직인다는것을 알아주세요!



playerChestTr.LookAt(ChestDir); 는 상제 transform 이 카메라가 보는 방향으로 하게 한것입니다 .


playerChestTr.rotation = playerChestTr.rotation * Quaternion.Euler(ChestOffset); 는 보정 해주는 코드인데요,


카메라 보는방향으로 LookAt 하게 되더라도 월래 본의 로컬 좌표때문에 허리가 거의 꺽이다시피 상체가 구부러지게 되더라구요 

상체를 세우고 로컬좌표를 다시 맞추기위해 ChestOffset을 추가해서 보정 한겁니다.


이상입니다.



반응형
반응형

c# 문자열에 특정문자열이 포함되어있는지 판단 하는 방법입니다.



string sentance1 = "Die1";

string sentance2 = "You Die";

string a = "Die";



bool isHave = sentance1 .Contains(a);

//결과

isHave => true


bool isHave = sentance2 .Contains(a);

//결과

isHave => true



sentance1.Contain("")는 다른단어가 붙어있거나 안붙어 있거나 문자열이 포함되어있으면 true값을 반환합니다.


이상입니다.

반응형

'C#' 카테고리의 다른 글

[C#] 정의한 enum 을 array로 변환해 처리하기  (0) 2019.02.19
[C#] 홀수, 짝수 구분하기  (0) 2019.01.24
[C#] enum 에서 Flags 속성달기  (1) 2019.01.10
[c#] 델리게이트 예시  (0) 2019.01.04
[C#] 삼항연산자  (0) 2018.11.23
반응형

삼항 연산자 예제 입니다.


if~ else 줄여서 사용할수 있는 문법입니다.

if ~else 의 가독성을 높인 문법이니 많이 활요하시면 좋을거 같습니다.


-삼항 연산자 

    ■    연산식 : 참  ? 거짓




예제 )


float sampleX = 5;

float X = 0;


if(sampleX > 0 )

{

X = 10;

}

else

{
    X = -10;
}


위 if~ else 문을 아래 삼항 연산자로 바꿀수 있습니다.


X = sampleX > 0  ?  10  :  -10;

연산식      참    거짓




이상입니다 감사합니다.

반응형
반응형

 캐릭터 가 적 오브젝트를 부드럽게 바라보는 방법입니다.




void Update()

{

FollowTarget();

}




void FollowTarget()

{

if (targetEnInfo != null)

{

Vector3 dir = targetEnInfo.transform.position - this.transform.position;

this.transform.rotation = Quaternion.Lerp(this.transform.rotation, Quaternion.LookRotation(dir), Time.deltaTime * speed);

}

}




targetEnInfo  은 적 오브젝트 입니다.


수학적으로 벡터 간의 차는 방향을 나타내는 개념을 이용해 보는 방향을 얻어내고 보간을 이용한것입니다.


Vector3 dir = targetEnInfo.transform.position - this.transform.position 는 적위치 - 현재 내위치 의미이며 현재 내위치에서 적위치의 방향을 나타냅니다.


Quaternion.LookRotation(dir) 은 dir 방향에 따른 쿼터니언 축회전을 하게 해줍니다. 



바라보는 속도를 높이고 싶으면 speed 값을 높이시면 됩니다.




이상입니다.

반응형
반응형

Unity  Hierarchy 에서 camera 생성시 기본적으로 아래와같이 camera /  GUI Layer / Flare Layer / Audio Listener  컴포넌트가 붙어 잇는걸 볼수가 있습니다.






 GUI Layer / Flare Layer / Audio Listener 가 궁금해서 알아보았습니다.



1. Flare Layer

우선 flare 가 무엇인지 찾아보았는데요 .

아래 사진과 같이 유성같이 퍼져나오는 빛을 의미합니다.


그래서 Flare Layer 는 아래와같은 빛의 표현을 하겠느냐라는 의미입니다.


게임 개발시 파티클을 추가하게 되면 카메라에 Flare layer 넣어주는게 좋겟죠 ??







2. GUI Layer


GUI Layer 컴포넌트는 유니티에 GUI 기능으로 나온 ui들을 카메라에 표현하겟냐는 컴포넌트입니다.


만약 카메라에 GUI Layer를 안넣는다면 GUI를 보실수 없습니다. GUI는 예로 아래와 같습니다.









3. Audio Listener


사운드 구현시 필요한 컴포넌트인데, 대부분 게임이 카메라기준으로 캐릭터및 오브젝트로 활용이 되어지다 보니 Camera 생성시 기본적으로 

 Audio Listener 컴포넌트가 붙는걸로 생각이 듭니다.


Audio Listener는 사람의 귀라고 생각하시며 되고, Audio Source 는 소리를 내는놈이라고 생각 하시면 됩니다. 사운드 구현시 Audio Listener와 Audio Source가 필요로 합니다.

Audio Listener은 한씬에 단 한개밖에 존재하지 못하며,  Audio Source 는 여러개가 존재해도 괜찮습니다.







이상입니다.

반응형

+ Recent posts