본문 바로가기

GameDevelopmentDiary/Project_SomewhereSaga : 가제(맵 에디터에서 중지)

11일차

스케쥴  : Schedule Sheet

MapEditor

    1. MapEditor
      •  MainMenu
        • NewMap <완료>
        • Save&Load <완료> - 오브젝트 필요.
        • Exit<0%>
      •  DrawController
        • MapData Load 및 파라미터 셋팅. <완료>
        • Tile 및 Obstacle 기본셋팅. <50%>
      • BrushController <수정>
        • Tile 변경. <수정>  - BackGround<meshRenderer>, FrontGround<SpriteRenderer> 추가.
        • Obstacle 변경. <0%>
        • Obstacle 위치 이동. <0%>
      • ToolBox <25%> <수정>
        • Layout. <70%>  라이브러리 제작 및 사용(Contents Controller) 사용.
        • TileTap. <완료>
        • Obstacle Tap.
      • ETC
        • 라이브러리 추가
        • ContentsController Component.
        • Conveyor 함수.
      • ----------------------------------------------------------------------------------------------------------------------------

 

Test Scene

 

라이브러리에 Conveyor 함수를 추가했다.

배열에서 int 매개변수만큼 item들을 밀고, 당기는 함수다.

예를들면.

{가, 나, 다, 라, 마} 를 2칸 씩 앞으로 '당기면.' -> {다, 라, 마, 가, 나}

 
            /// <서머리>
            /// Pull or push items in array 
            /// 
            /// <파라미터 name="objs">
            /// <파라미터 name="moveCount">negativeNum : Pull (0,'1,2,3' -> '1,2,3',0) / positiveNum : Push ('0,1,2',3 -> 3,'0,1,2')             
            public static object[] Conveyor(object[] objs, int moveCount) {                
                if (objs != null) {
                    object[] objects = objs; //Type과 길이를 복사.
                    int turningPoint = objs.Length - Math.Abs(moveCount); //추가, 감소 시 생기는 전환점이다.
                    if (moveCount > 0) {
                        for (int i = 0; i < turningPoint; i++) {
                            objects[i] = ChangeObj_NullPossiable(objs[i + moveCount]); //당겨진 object

                            if (i < moveCount) {
                                objects[turningPoint + i] = ChangeObj_NullPossiable(objs[i]); //미뤄진 object
                            }
                        }
                    }//moveCount만큼 당김.
                    else {
                        moveCount = moveCount * -1; // 음수를 양수로 변환.
                        for (int i = 0; i < turningPoint; i++){
                            objects[moveCount + i] = ChangeObj_NullPossiable(objs[i]); //당겨진 object

                            if (i < moveCount){
                                objects[i] = ChangeObj_NullPossiable(objs[turningPoint + i]); //미뤄진 object
                            }
                        }
                    }//moveCount만큼 밀어냄.            
                    return objects;
                }
                else {
                    Debug.Log("Null Object Array from ConvayorFunction");
                    return null;
                }
            }


string str = "";

int[] array = new int[]{1,2,3,4,5};

array = Conveyor(array, -3);

foreach(int a in array){

    str = str + a.ToString() + ", ";

}

Debug.Log(str);


이렇게하면


4, 5, 1, 2, 3,


PS.

    system.object를 매개변수로 사용해 return을 같은 type으로 할 때 new를 조심해야겠다.  

    임시 지역변수를 new object로 하면 매개변수 Type으로 가져오기 힘들어진다.

'GameDevelopmentDiary > Project_SomewhereSaga : 가제(맵 에디터에서 중지)' 카테고리의 다른 글

12-14일차  (0) 2019.04.23
8 - 10일차  (0) 2019.03.20
6,7일차  (0) 2019.03.06
5일차  (0) 2019.03.01
4일차  (0) 2019.02.24