[패스트캠퍼스 수강 후기] 올인원 패키지 : 유니티 포트폴리오 완성 100% 환급 챌린지 30회차 미션 시작합니다.

04. 배틀로얄 - 05, 06 번을 진행합니다.




"Assets/1.Scripts/GameData" 폴더 내에 C# Script를 "BaseData"로 하나 생성합니다.

ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는데 사용할 수 있는 데이터 컨테이너입니다.

json을 실무에서 많이 사용하고 가장 좋지만, 이후 설명에서도 사용할 것이기 때문에 여기서는 비교 스터디 목적으로 xml 기반으로 구동되는 클래스를 작성합니다.

LinQ 구문도 가능하면 꼭 필요한 부분에서만 사용하겠다고 하시네요. 기존 C++ 개발자분들을 배려하시는 듯 합니다.



/// <summary>
/// data의 기본 클래스입니다.
/// 공통적인 데이트를 가지고 있게 되는데, 이름만 현재 갖고 있다.
/// 데이터의 갯수와 이름의 목록 리스트를 얻을 수 있다.
/// </summary>
public class BaseData : ScriptableObject
{
    public const string dataDirectory = "/9.ResourcesData/Resources/Data/";
    public string[] names = null; // 데이터를 읽기 전이라는 의미로 null 처리.
    
    public BaseData() { }
    
    public int GetDataCount() {
        int retValue = 0;
        if (this.names != null)
            retValue = this.name.Length; // Length는 Property, Count()는 확장 메서드. 실제 사용상 차이 있음.
        return retValue;
    }
    
    /// <summary>
    /// 툴에 출력하기 위한 이름 목록을 만들어주는 함수.
    /// </summary>
    public string[] GetNameList(bool showID, string filterWord = "") {
        string[] retList = new string[0];
        if (this.names == null) return retList;
        
        retList = new string[this.names.Length];
        for(int i = 0; i < this.names.Length; i++) {
            if (filterWord != "") {
                if (names[i].toLower().Contains(filterWorld.ToLower()) == false) {
                    continue;
                }
            }
            if (showID) {
                retList[i] = i.ToString() + " : " + this.names[i]; // index를 붙여서 보여주기.
            }
            else {
                retList[i] = this.names[i];
            }
        }
        return retList;
    }
    
    public virtual int AddData(string newName) {
        return GetDataCount();
    }
    
    public virtual void RemoveData(int index) {
    }
    
    public virtual void Copy(int index) {
    }
}





///를 입력하여 summary를 입력해줌으로써 다른 개발자가 해당 클래스를 사용하려고 할 때 많은 도움이 되기 때문에 현업에서는 사용하는 경우가 많습니다. 지금은 클래스가 몇 개 되지 않아 큰 도움이 될 것같이 보이진 않아도, 나중에 프로젝트가 커져서 클래스, 함수가 많아지게 되면 도움이 될 것입니다.

대신 summary를 입력해놓고 열심히 개발하다보니 클래스, 함수의 내용이 많이 변하였는데 summary 내용이 업데이트되지 않으면 오히려 혼선만 발생할 수 있습니다. 그래서 그럴거면 아예 달지 말자는 얘기도 있다고 합니다만...

너무 모든 곳에 다 설명을 달려고 하지 말고 클래스와 주요 함수 정도에는 달아주는 것이 좋습니다. 대신 함수를 업데이트하게 된다면 꼭 summary 내용을 확인하여 위배된다면 summary도 업데이트 해주는 것을 잊지말아야겠습니다.

summary는 협업에 있어서는 매너라고 생각하면 될 것 같습니다.



소스코드내 dataDirectory는 위와 같이 Unity Project에 있는 "Data" 폴더를 가리키게 됩니다.


 


"Edit - Preferences.." 에서 "External Tools"에서 "External Script Editor"가 설정되어 있어야 Unity와 Editor가 정상적으로 연동되고 컴파일됩니다.

실무에서는 "Rider(유료)"를 많이 사용하는데 여기서는 "Visual Studio 2019 (Community)" 버전을 사용하여 진행합니다.

 

 

여기까지 기반이 되는 BaseData 클래스를 제작하였고, 다음 시간에는 실제 Tool 제작에 들어가겠네요 ^^~

 




<위의 코드들은 제가 보면서 주요한 함수, 코드를 확인하기 위해 타이핑한 용도로, 전체 소스코드가 아님에 주의해 주세요. 전체 코드는 교육 수강을 하면 완벽하게 받으실 수가 있답니다 ^^>

패스트캠퍼스 - 올인원 패키지 : 유니티 포트폴리오 완성 bit.ly/2R561g0

 

유니티 게임 포트폴리오 완성 올인원 패키지 Online. | 패스트캠퍼스

게임 콘텐츠 프로그래머로 취업하고 싶다면, 포트폴리오 완성은 필수! '디아블로'와 '배틀그라운드' 게임을 따라 만들어 보며, 프로그래머 면접에 나오는 핵심 개념까지 모두 잡아 보세요!

www.fastcampus.co.kr

 

+ Recent posts