원본: https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/DOTS_Guide/ecs_tutorial/README.md

변환 설정

베이킹 파이프라인(baking pipeline)을 적절히 설정

이 튜토리얼의 나머지 부분에서는 Preferences > Entites의 "Scene View Mode" 항목이 "Runtime Data"로 되어 있다고 가정합니다:


블로그 이미지

RIsN

,

원본: https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/DOTS_Guide/ecs_tutorial/README.md

프로젝트 설정

새 프로젝트를 만들고, 필요한 패키지를 설치하고, 설정을 조정.

  1. 3D(URP) 템플릿을 사용하여 Unity Hub에 새 프로젝트를 만듭니다. 템플릿을 사용해 본 적이 없으면 결국 다운로드해야 합니다. 올바른 에디터 버전을 사용하고 있는지 확인해주세요.
  2. 프로젝트가 로드되면 "URP Empty Template" 인스펙터에서 "Remove Readme Assets" 단추를 클릭합니다. 이렇게 하면 이 자습서에 필요하지 않은 "Assets/TutorialInfo" 폴더가 제거됩니다. 이 인스펙터는 기본적으로 선택되어 있어야 하지만 혹시 선택되지 않았다면 프로젝트 창에서 Assets/Readme.asset를 선택합니다.
  3. 이 튜토리얼에서는 패키지 하나만 명시적으로 설치해야 합니다. 다른 패키지는 종속되어 프로젝트에 포함됩니다. Window > Package Manager로 이동하여 왼쪽 상단의 + 버튼을 클릭하고 "Add package by name"을 선택합니다. "Name" 필드를 "com.unity.entities.graphics"으로 설정하고 "Version" 필드를 비워둔 다음 "Add" 버튼을 클릭하고 패키지와 종속 패키지가 설치될 때까지 기다립니다.
  4. Edit > Project Settings > Editor에서 "Enter Play Mode Options"을 사용 가능으로 설정하고, 하위 선택사항 중 "Reload ___" 관련은 선택하지 않은 상태로 둡니다. 이러한 옵션의 기능에 대한 자세한 내용은 다음 링크를 참조 해주세요.
    이러한 설정이 static 필드(블로그 게시물 등 참조)의 사용에 미치는 영향에 주의 해주세요.
  5.  
  6. 프로젝트 창에서 Assets 폴더의 다음 목록에서 누락된 폴더를 생성 해주세요.
    • Prefabs
    • Scenes (already created)
    • Scripts/Aspects
    • Scripts/Authoring
    • Scripts/Components
    • Scripts/MonoBehaviours
    • Scripts/Systems
    • Settings (already created)

블로그 이미지

RIsN

,

원본: https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/DOTS_Guide/ecs_tutorial/README.md

명령어 사용 및 제공된 코드 사용

이 튜토리얼의 인라인 코드에 관한 설명.

이 문서의 모든 코드 토막은 참조 프로젝트에서 자동으로 추출되고, 코드 토막을 포함하는 전체 파일의 사용 명령어가 복사됩니다. 따라서 명령어가 도입되는 시점에 아직 필요하지 않은 명령어를 사용하게 됩니다.

또한 UnityEngine 유형을 명시적으로 참조하는 방법에 주의하십시오. 이것은 이 튜토리얼에서 고전적인 유니티 유형과 DOTS 관련 유형을 명확하게 설명하기 위해 사용되는 규칙입니다.

일부 파일은 전체적으로 제공되며, 일부 파일은 기존 파일을 수정한 것으로 이 경우에는 + 줄(녹색)이 추가되고 - 줄(빨간색)이 제거되며, 다른 줄은 변경되지 않고 코드 토막만 제공합니다.

마지막으로 제공된 소스 파일을 복사할 때 코드의 주석을 읽으십시오. 이러한 설명에는 각 단계의 목적에 대한 많은 중요한 정보가 포함되어 있으며 이 튜토리얼의 필수적인 부분입니다.

블로그 이미지

RIsN

,

원본: https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/DOTS_Guide/ecs_tutorial/README.md

필요한 유니티 버전

이 튜토리얼은 2022.2.0b8을 사용했습니다.

Unity Hub 자체의 Unity 릴리스 목록에서 해당 버전(또는 최신 패치 릴리스)을 찾습니다.
"설치"(왼쪽 메뉴) → "에디터 설치"(오른쪽 위), "사전 릴리스"(탭).

또는, 다음의 링크에서 유니티 에디터의 2022.2.0b8 버전을 수동으로 다운로드 할 수도 있습니다:

블로그 이미지

RIsN

,

원본: https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/DOTS_Guide/ecs_tutorial/README.md

개요

이 문서에서 기대할 수 있는 내용.

이 튜토리얼에서는 다양한 기본 DOTS(Data-Oriented Technology Stack) 개념을 보여주는 매우 간단한 프로젝트를 만드는 과정을 단계별로 안내합니다. 많은 곳에서, 다양한 개념을 점진적으로 도입하기 위해 초기에 최적이 아니거나 부정확한 방식으로 기능이 사용됩니다. 그러니 먼저 전체 문맥을 이해하지 않고 이 자습서의 일부를 다른 프로젝트로 복사하지 마십시오.

이 튜토리얼은 핵심 엔티티 패키지에 초점을 맞추고 있으며 엔터티 그래픽을 매우 기본적으로 사용합니다. 그리고 physics이나 netcode와 같은 추가 패키지를 사용하지 않습니다.

완료된 프로젝트에는 다음과 같은 "기능"이 포함되어 있습니다:

  • 색깔이 입혀진 작은 탱크들이 필드 위를 움직이며 포탑을 돌리고 있습니다.
  • 본래 위치에서 충분히 멀리 떨어진 곳에서, 탱크들은 색깔이 입혀진 투사체를 쏘고 잇습니다.
  • 투사체는 지면에 닿아 튀기고 잠시 후 사라집니다.
  • 카메라는 임의의 탱크를 따라 움직이고 스페이스 바를 누를 때마다 다른 탱크로 전환됩니다.

이 자료에서 문제가 발견되면 보고해주세요. 혼란스러운 모든 것, 부딪히는 모든 오류 등. 이 튜토리얼을 개선하는 데 도움이 될 수 있는 모든 것을 환영합니다. 이를 위해 DOTS Forum을 사용해주세요.


참고:

블로그 이미지

RIsN

,

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.


입력

첫째 줄에 A와 B가 주어진다. (0 < A,B < 10_10000)


출력

첫째 줄에 A+B를 출력한다.


코드

#include <iostream>

using namespace std;

int main()
{
    // :: Input
    string a, b;
    cin >> a >> b;
    
    // 1. Check the max string length.
    int max = a.length();
    if(b.length() > max) max = b.length();
    
    // 2. Put 0 in front of the string to make the same length
    while(max != a.length()) {
        a.insert(0, "0");
    }
    while(max != b.length()) {
        b.insert(0, "0");
    }
    
    // 3. Calculate numbers from the back
    bool plus = false;
    string result = "";
    for(int index = max - 1; index >= 0; index--) {
        int sum = (a[index] - '0') + (b[index] - '0');
        
        if(plus) {
            sum += 1;
            plus = false;
        }
        
        if(sum >= 10) {
            sum -= 10;
            plus = true;
        }
        
        result.insert(0, to_string(sum));
    }
    if(plus) result.insert(0, "1");

    // :: Print
    cout << result;
    
    return 0;
}

참고

 
 

 

'C++ > Baekjoon' 카테고리의 다른 글

백준 10250: ACM 호텔  (0) 2022.12.05
백준 2755: 부녀회장이 될테야  (0) 2022.11.28
백준 2292: 벌집  (0) 2022.10.20
백준 1712: 손익분기점  (0) 2022.10.19
백준 25304: 영수증  (0) 2022.10.18
블로그 이미지

RIsN

,

함께 자라기: 애자일로 가는 길 표지

감상

: 개발자의 소통의 중요성에 대해서 알려주는 책
: 개발을 할 거라면 한 번 이상 읽어보는 게 좋지 않을까 싶다.

이해

: 개발자의 실력은 경력에 그렇게 좌우되지 않는다.
: 개발자의 실력은 소통하는 능력에 좌우된다.
: 무언가를 하고 싶을 때 중요한 것은 역시나 인간이다.
: 호감도가 모든 것을 유연하게 가게 해준다.

블로그 이미지

RIsN

,

백준 2292: 벌집

C++/Baekjoon 2022. 10. 20. 23:34

문제

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.


입력

첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.


출력

입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.


코드

#include <iostream>

using namespace std;

int main()
{
    // :: Input
    int checkNumber;
    cin >> checkNumber;
    
    // :: Prepare
    int sum = 1, index = 1;
    
    // :: Calculate
    while(true) {
        // :: Exit
        if(checkNumber <= sum) break;
        
        sum += 6 * index;
        index += 1;
    }
    
    // :: Output
    cout << index;

    return 0;
}

참고

 
 

 

 

'C++ > Baekjoon' 카테고리의 다른 글

백준 2755: 부녀회장이 될테야  (0) 2022.11.28
백준 10757: 큰 수 A+B  (0) 2022.11.20
백준 1712: 손익분기점  (0) 2022.10.19
백준 25304: 영수증  (0) 2022.10.18
백준 3003: 킹, 퀸, 룩, 비숍, 나이트, 폰  (0) 2022.10.17
블로그 이미지

RIsN

,

문제

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다.

예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다.

노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다.

A, B, C가 주어졌을 때, 손익분기점을 구하는 프로그램을 작성하시오.


입력

첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 21억 이하의 자연수이다.


출력

첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다.


코드

#include <iostream>

using namespace std;

int main()
{
    // :: Input
    int costPrepare, costProduct, price;
    cin >> costPrepare >> costProduct >> price;
    
    // :: Convert
    int gap = price - costProduct;
    
    // :: EXIT: Exception
    if(gap <= 0) {
        cout << -1;
        
        return 0;
    }
    
    // :: Convert
    int count = (costPrepare / gap) + 1;
    
    // :: Print
    cout << count;

    return 0;
}

참고

'C++ > Baekjoon' 카테고리의 다른 글

백준 10757: 큰 수 A+B  (0) 2022.11.20
백준 2292: 벌집  (0) 2022.10.20
백준 25304: 영수증  (0) 2022.10.18
백준 3003: 킹, 퀸, 룩, 비숍, 나이트, 폰  (0) 2022.10.17
백준 1316: 그룹 단어 체커  (0) 2022.10.10
블로그 이미지

RIsN

,

문제

동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.

체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.

체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.

동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.


입력

첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.

둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.

이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.


출력

구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다. 일치하지 않는다면 No를 출력한다.


코드

#include <iostream>

using namespace std;

int main()
{
    // :: Input
    int total, count;
    cin >> total >> count;
    
    // :: Convert
    int sum = 0;
    for(int index = 0; index < count; index++) {
        int price, number;
        cin >> price >> number;
        sum += price * number;
    }
    string print = total == sum ? "Yes" : "No";
    
    // :: Output
    cout << print;
    return 0;
}

참고

'C++ > Baekjoon' 카테고리의 다른 글

백준 2292: 벌집  (0) 2022.10.20
백준 1712: 손익분기점  (0) 2022.10.19
백준 3003: 킹, 퀸, 룩, 비숍, 나이트, 폰  (0) 2022.10.17
백준 1316: 그룹 단어 체커  (0) 2022.10.10
백준 2941: 크로아티아 알파벳  (0) 2022.10.10
블로그 이미지

RIsN

,