'전체 글'에 해당되는 글 137건

  1. 2021.01.21 class 와 id의 차이점
  2. 2021.01.20 for문
  3. 2021.01.19 문자열 다루기
  4. 2021.01.19 Truthy 와 Falsy
  5. 2020.02.11 적기 데미지 교환
  6. 2020.01.29 개인정보 처리 방침
  7. 2019.12.19 12.19 게이지바 만들기
  8. 2019.12.18 Sprite Atlas 사용하기

class 와 id의 차이점

웹 개발/Study 2021. 1. 21. 14:22

class                                                                          id

.으로 선택 #으로 선택
목적에 맞게 자유롭게 이름 붙일 수 있음 목적에 맞게 자유롭게 이름 붙일 수 있음
동일한 값을 갖는 엘리먼트 많음 문서 내에서 단 하나의 엘리먼트가 유일한 값을 가짐
엘리먼트가 여러 값을 가질 수 있음 엘리먼트 단 하나의 값을 가짐
스타일의 분류(classification)에 사용 특정 엘리먼트를 이름 붙이는 데 사용

 

'웹 개발 > Study' 카테고리의 다른 글

Closure 과 Currying  (0) 2021.02.03
block, inline-block, inline  (0) 2021.01.21
for문  (0) 2021.01.20
문자열 다루기  (0) 2021.01.19
Truthy 와 Falsy  (0) 2021.01.19
:

for문

웹 개발/Study 2021. 1. 20. 10:05

반복할 조건을 초기화, 조건식, 증감문 순으로 넣어준다.

1
2
3
4
5
6
let sum;
for(i =0; i< 5; i = i+1)
{
sum = sum + 1;
}
console.log(sum) // 10
cs

'웹 개발 > Study' 카테고리의 다른 글

Closure 과 Currying  (0) 2021.02.03
block, inline-block, inline  (0) 2021.01.21
class 와 id의 차이점  (0) 2021.01.21
문자열 다루기  (0) 2021.01.19
Truthy 와 Falsy  (0) 2021.01.19
:

문자열 다루기

웹 개발/Study 2021. 1. 19. 18:18
  • 문자열의 length라는 속성을 활용해 길이를 확인할 수 있다. str.length
  • 문자열의 글자 하나하나에 접근할 수 있다. str[1]
  • 문자열을 합칠 수 있다. word1 + " " + word2
  • 문자열을 원하는 만큼만 잡을 수 있다. str.slice(0, 3) str.substring(0, 3)
  • 영문을 모두 대문자로 바꿀 수 있다. str.toUpperCase
  • 영문을 모두 소문자로 바꿀 수 있다. str.toLowerCase
  • 문자열 중 원하는 글자의 index를 찾을 수 있다 str.indexOf('a')
  • 문자열 중 원하는 글자가 포함되어 있는지 알 수 있다. str.includes('a')

'웹 개발 > Study' 카테고리의 다른 글

Closure 과 Currying  (0) 2021.02.03
block, inline-block, inline  (0) 2021.01.21
class 와 id의 차이점  (0) 2021.01.21
for문  (0) 2021.01.20
Truthy 와 Falsy  (0) 2021.01.19
:

Truthy 와 Falsy

웹 개발/Study 2021. 1. 19. 16:52

기억해야할 falsy 값들:

false

null

undefined

0

NaN (Not a Number)

''

OR 연산자는 truthy한 값을 만나면, 그 값을 출력한다.

평가순서:

------->

undefined || 10 --> 10 (true)

5 || 10 --> 5

5 || console.log('실행되지않음') --> 5

둘다 falsy 할 경우, 뒤에 있는 값을 출력한다.

undefined || false  --> false

AND 연산자는 falsy 한 값을 만나면, 그 값을 출력 합니다.

undefined && 10 --> undefined

5 && false --> false

둘다 truthy 할 경우, 뒤에 있는 값을 출력한다.

5 && 10 --> 10

'웹 개발 > Study' 카테고리의 다른 글

Closure 과 Currying  (0) 2021.02.03
block, inline-block, inline  (0) 2021.01.21
class 와 id의 차이점  (0) 2021.01.21
for문  (0) 2021.01.20
문자열 다루기  (0) 2021.01.19
:

적기 데미지 교환

카테고리 없음 2020. 2. 11. 15:34

총알에 데미지, 방어구 관통력 및 여러가지 특성을 멤버 변수로 갖게하고 collider를 이용해 GetComponent<EnemyHP>()로 적기의 체력을 담당하는 컴포넌트에 접속해서 데미지를 가하게 한다.

한프레임에 여러 총알이 데미지를 가하면서 죽는 시점이 곂칠 수 있는것을 방지하기 위해 데미지는 한프레임에 한번씩만 넣어야한다. 따라서 Queue<int> damages 멤버변수를 만들고 코루틴을 돌려서 매 프레임 Dequeue 하면서 적기의 체력을 깍아 나가는 방식으로 하였다.

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class EnemyHP : MonoBehaviour
{
    public int hp;
    public int armor;
    public Queue<int> damages;
    Coroutine giveDamageC;
    public void Init(int hp, int armor)
    {
        this.hp = hp;
        this.armor = armor;
    }
    IEnumerator GiveDamage()
    {
        while(true)
        {
            this.hp -= damages.Dequeue();
            if(damages.Count == 0)
            {
                break;
            }
            if(this.hp <=0)
            {
                Destroy(this.gameObject);
            }
            yield return null;
        }
    }
    public void Hit(int damage, params int[] penetration) //데미지, 고정 방관, 비율 방관순
    {
        int finalDamage = 0;
        //실제 피해 = 원래 피해 x 100 / (100 + 방어력)------ - (방어력이 0 이상일 경우)
 
        //실제 피해 = 원래 피해 x(2 - 100 / (100 - 방어력))
        if (penetration.Length ==2//데미지, 고정방관, 비율방관
        {
            finalDamage = (damage * 100/ (100 + ((this.armor - penetration[0]) / penetration[1]));
            damages.Enqueue(finalDamage);
        }
        else if(penetration.Length == 1//데미지, 고정방관
        {
            finalDamage = (damage * 100/ (100 + this.armor - penetration[0]);
            damages.Enqueue(finalDamage);
        }
        else if(penetration.Length ==0)
        {
            finalDamage = (damage * 100/ (100 + this.armor);
            damages.Enqueue(finalDamage);
        }
        else
        {
            Debug.Log("Wrong penetration parameter!");
        }
        StopAllCoroutines();
        this.giveDamageC = StartCoroutine(GiveDamage());
        
    }
    
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

이런식으로 하면 특성에 있는 도트딜을 주는것도 자신의 코루틴 안에서  저 컴포넌트에 접속해서 Hit 메서드를 불러와서 데미지를 줄 수 있다.

:

개인정보 처리 방침

카테고리 없음 2020. 1. 29. 10:06

1. 개인정보의 처리 목적 (‘https://migoreng.tistory.com/’이하 ‘YATO’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다.
- 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등


2. 개인정보의 처리 및 보유 기간

 (‘https://migoreng.tistory.com/’이하 ‘YATO’) 은(는) 정보주체로부터 개인정보를 수집할 때 동의 받은 개인정보 보유․이용기간 또는 법령에 따른 개인정보 보유․이용기간 내에서 개인정보를 처리․보유합니다.

② 구체적인 개인정보 처리 및 보유 기간은 다음과 같습니다.
☞ 아래 예시를 참고하여 개인정보 처리업무와 개인정보 처리업무에 대한 보유기간 및 관련 법령, 근거 등을 기재합니다.
(예시)- 고객 가입 및 관리 : 서비스 이용계약 또는 회원가입 해지시까지, 다만 채권․채무관계 잔존시에는 해당 채권․채무관계 정산시까지
- 전자상거래에서의 계약․청약철회, 대금결제, 재화 등 공급기록 : 5년



3. 개인정보의 제3자 제공에 관한 사항

 ('https://migoreng.tistory.com/'이하 'YATO')은(는) 정보주체의 동의, 법률의 특별한 규정 등 개인정보 보호법 제17조 및 제18조에 해당하는 경우에만 개인정보를 제3자에게 제공합니다.

 ('https://migoreng.tistory.com/')은(는) 다음과 같이 개인정보를 제3자에게 제공하고 있습니다.


1. <>
- 개인정보를 제공받는 자 :
- 제공받는 자의 개인정보 이용목적 :
- 제공받는 자의 보유.이용기간:



4. 개인정보처리 위탁

 ('YATO')은(는) 원활한 개인정보 업무처리를 위하여 다음과 같이 개인정보 처리업무를 위탁하고 있습니다.

1. <>
- 위탁받는 자 (수탁자) :
- 위탁하는 업무의 내용 :
- 위탁기간 :



 ('https://migoreng.tistory.com/'이하 'YATO')은(는) 위탁계약 체결시 개인정보 보호법 제25조에 따라 위탁업무 수행목적 외 개인정보 처리금지, 기술적․관리적 보호조치, 재위탁 제한, 수탁자에 대한 관리․감독, 손해배상 등 책임에 관한 사항을 계약서 등 문서에 명시하고, 수탁자가 개인정보를 안전하게 처리하는지를 감독하고 있습니다.

③ 위탁업무의 내용이나 수탁자가 변경될 경우에는 지체없이 본 개인정보 처리방침을 통하여 공개하도록 하겠습니다.

5. 정보주체와 법정대리인의 권리·의무 및 그 행사방법 이용자는 개인정보주체로써 다음과 같은 권리를 행사할 수 있습니다.

① 정보주체는 YATO(‘https://migoreng.tistory.com/’이하 ‘YATO) 에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다.
1. 개인정보 열람요구
2. 오류 등이 있을 경우 정정 요구
3. 삭제요구
4. 처리정지 요구



6. 처리하는 개인정보의 항목 작성

 ('https://migoreng.tistory.com/'이하 'YATO')은(는) 다음의 개인정보 항목을 처리하고 있습니다.

1<개인정보 확인>
- 필수항목 : 이메일, 로그인ID, 성별, 생년월일
- 선택항목 :




7. 개인정보의 파기('YATO')은(는) 원칙적으로 개인정보 처리목적이 달성된 경우에는 지체없이 해당 개인정보를 파기합니다. 파기의 절차, 기한 및 방법은 다음과 같습니다.

-파기절차
이용자가 입력한 정보는 목적 달성 후 별도의 DB에 옮겨져(종이의 경우 별도의 서류) 내부 방침 및 기타 관련 법령에 따라 일정기간 저장된 후 혹은 즉시 파기됩니다. 이 때, DB로 옮겨진 개인정보는 법률에 의한 경우가 아니고서는 다른 목적으로 이용되지 않습니다.

-파기기한
이용자의 개인정보는 개인정보의 보유기간이 경과된 경우에는 보유기간의 종료일로부터 5일 이내에, 개인정보의 처리 목적 달성, 해당 서비스의 폐지, 사업의 종료 등 그 개인정보가 불필요하게 되었을 때에는 개인정보의 처리가 불필요한 것으로 인정되는 날로부터 5일 이내에 그 개인정보를 파기합니다.



8. 개인정보 자동 수집 장치의 설치•운영 및 거부에 관한 사항

① YATO 은 개별적인 맞춤서비스를 제공하기 위해 이용정보를 저장하고 수시로 불러오는 ‘쿠기(cookie)’를 사용합니다. ② 쿠키는 웹사이트를 운영하는데 이용되는 서버(http)가 이용자의 컴퓨터 브라우저에게 보내는 소량의 정보이며 이용자들의 PC 컴퓨터내의 하드디스크에 저장되기도 합니다. 가. 쿠키의 사용 목적 : 이용자가 방문한 각 서비스와 웹 사이트들에 대한 방문 및 이용형태, 인기 검색어, 보안접속 여부, 등을 파악하여 이용자에게 최적화된 정보 제공을 위해 사용됩니다. 나. 쿠키의 설치•운영 및 거부 : 웹브라우저 상단의 도구>인터넷 옵션>개인정보 메뉴의 옵션 설정을 통해 쿠키 저장을 거부 할 수 있습니다. 다. 쿠키 저장을 거부할 경우 맞춤형 서비스 이용에 어려움이 발생할 수 있습니다.

9. 개인정보 보호책임자 작성


① YATO(‘https://migoreng.tistory.com/’이하 ‘YATO) 은(는) 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다.


▶ 개인정보 보호책임자
성명 :이호준
직책 :대표
직급 :대표
연락처 :01033117871, dlghwns0314@naver.com,
※ 개인정보 보호 담당부서로 연결됩니다.

▶ 개인정보 보호 담당부서
부서명 :
담당자 :
연락처 :, ,
② 정보주체께서는 YATO(‘https://migoreng.tistory.com/’이하 ‘YATO) 의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및 담당부서로 문의하실 수 있습니다. YATO(‘https://migoreng.tistory.com/’이하 ‘YATO) 은(는) 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.



10. 개인정보 처리방침 변경

①이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경내용의 추가, 삭제 및 정정이 있는 경우에는 변경사항의 시행 7일 전부터 공지사항을 통하여 고지할 것입니다.



11. 개인정보의 안전성 확보 조치 ('YATO')은(는) 개인정보보호법 제29조에 따라 다음과 같이 안전성 확보에 필요한 기술적/관리적 및 물리적 조치를 하고 있습니다.

1. 개인정보 취급 직원의 최소화 및 교육
개인정보를 취급하는 직원을 지정하고 담당자에 한정시켜 최소화 하여 개인정보를 관리하는 대책을 시행하고 있습니다.

2. 접속기록의 보관 및 위변조 방지
개인정보처리시스템에 접속한 기록을 최소 6개월 이상 보관, 관리하고 있으며, 접속 기록이 위변조 및 도난, 분실되지 않도록 보안기능 사용하고 있습니다.

:

12.19 게이지바 만들기

카테고리 없음 2019. 12. 19. 17:18

코드:

 

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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class TestHQ2 : MonoBehaviour
{
    public UIGauge uiGauge;
    public Button btnUP;
    public Button btnDown;
    public btnCTRL btnCtrlUp;
    public btnCTRL btnCtrlDown;
    // Start is called before the first frame update
    void Start()
    {
        btnCtrlUp = btnUP.GetComponent<btnCTRL>();
        btnCtrlDown = btnDown.GetComponent<btnCTRL>();
        //btnUP.onClick.AddListener(() => { uiGauge.fillImg.fillAmount += 0.1f; });//꾹누르기
        //btnDown.onClick.AddListener(() => { uiGauge.fillImg.fillAmount -= 0.1f; });
        //btnUP.onClick.AddListener(() => { uiGauge.GaugeUpbyC(); });//코루틴으로 10씩
        //btnDown.onClick.AddListener(() => { uiGauge.GaugeDownbyC(); });
        btnUP.onClick.AddListener(() => { uiGauge.GaugeUpbyDG(); });//두트윈으로 10씩
        btnDown.onClick.AddListener(() => { uiGauge.GaugeDownbyDG(); });
    }
 
    // Update is called once per frame
    void Update()
    {
        //if(btnCtrlUp.isBtnDown)//꾹누르기
        //{
        //    uiGauge.fillImg.fillAmount += 0.01f;
        //}
        //else if(btnCtrlDown.isBtnDown)
        //{
        //    uiGauge.fillImg.fillAmount -= 0.01f;
        //}
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class UIGauge : MonoBehaviour
{
    public Image fillImg;
    public Text txtPercent;
    Coroutine gaugeUpC;
    Coroutine gaugeDownC;
    float amount =0;
    float targetAmount = 0;
    private void Start()
    {
 
    }
    public void Update()
    {
        txtPercent.text = string.Format("{0:0.00} %",fillImg.fillAmount*100);
    }
 
    public void UpdateGauge()
    {
        fillImg.fillAmount = amount;
    }
    public void GaugeUpbyDG()
    {
        if (targetAmount <= 90)
        {
            targetAmount += 10;
            DOTween.To(() => fillImg.fillAmount, x => fillImg.fillAmount = x, targetAmount/1001);
        }
    }
    public void GaugeUpbyC()
    {
        if(targetAmount <= 90)
        {
            StopAllCoroutines();
            targetAmount += 10;
            gaugeUpC = StartCoroutine(GaugeUpC());
        }        
    }
    public void GaugeDownbyDG()
    {
        if (targetAmount >= 10)
        {
            targetAmount -= 10;
            DOTween.To(() => fillImg.fillAmount, x => fillImg.fillAmount = x, targetAmount / 1001);
        }
    }
    public void GaugeDownbyC()
    {
        if(targetAmount >= 10)
        {
            StopAllCoroutines();
            targetAmount -= 10;            
            gaugeDownC = StartCoroutine(GaugeDownC());
        }        
    }
    IEnumerator GaugeUpC()
    {
        while (true)
        {
            if (fillImg.fillAmount * 100 >= targetAmount)
            {
                fillImg.fillAmount = targetAmount /100;
                break;
            }
            fillImg.fillAmount += 0.011f;
            yield return null;
        }
    }
    IEnumerator GaugeDownC()
    {
        while (true)
        {
            if (fillImg.fillAmount*100 <= targetAmount)
            {
                fillImg.fillAmount = targetAmount/100;
                break;
            }
            fillImg.fillAmount -= 0.011f;
            yield return null;
        }
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 
:

Sprite Atlas 사용하기

C#/Study 2019. 12. 18. 16:54

추가:

Atlas 사용하기:

0. Edit > Project Setting > Editor> Sprite Packer > Mode = Always Enabled

1. 프로젝트 폴더 우클릭해서 Create > Sprite Atlas 생성

2. (인스펙터를 잠금한 후)Objects for Packing에 넣을 스프라이트들을 드래그하여 넣는다. 

(Pack Preview 클릭하면 미리보기 가능)

3. 코드창에 

추가:

using UnityEngine.U2D;

선언:
public SpriteAtlas atlas;

사용:

atlas.GetSprite(이름);

(atlas 안에 있는 스프라이트를 꺼내온다)

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

오브젝트 풀링 (인스턴스로 접근)  (0) 2019.12.16
12.10 오브젝트 풀 활용  (0) 2019.12.10
12.09 드래곤플라이트 2 (이펙트 추가)  (0) 2019.12.09
12.02 객체 충돌  (0) 2019.12.02
struct 와 클래스의 차이  (0) 2019.11.02
: