public void LoadWall(int _originNumber, Item _loadItem, string _objectName, Vector3 _currentPosition, Vector3 _currentRotate, Vector3 _currentScale, int _placeNumber, float _tilingX, float _tilingY) { /* 게임 오브젝트 생성 */ GameObject _loadObject = Instantiate(_loadItem.item3d); /* 부모 지정 */ _loadObject.transform.SetParent(_inDoor.transform.GetChild(0)); /* 자식으로 변경 */ _loadObject = _loadObject.transform.GetChild(0).gameObject; /* ItemObject 스크립트 추가 */ ItemObject _tmp = _loadObject.AddComponent <ItemObject>(); /* 빠른 연결을 위한 캐싱 작업 */ Item _tmpItem = new Item(_objectName, _itemListControl._wallDBIndex + 1, _originNumber, _loadObject); /* 추가한 ItemObject에 현재 Item의 정보를 담음 */ _tmp._thisItem = _tmpItem; /* DB에 삽입 */ _itemListControl.AddWall(_tmpItem); /* PlaceNumber 지정 */ _tmp._placeNumber = _placeNumber; /* 이름 지정 */ _loadObject.transform.parent.name = _loadObject.transform.parent.name.Substring(0, _loadObject.transform.parent.name.Length - 7); /* 위치 조정 */ _loadObject.transform.parent.position = _currentPosition; /* 회전 조절*/ _loadObject.transform.parent.Rotate(_currentRotate); /* 크기 지정*/ _loadObject.transform.parent.localScale = _currentScale; /* Sprite 복사 */ Sprite _tmpSprite = _itemListControl.GetImages(3, _placeNumber); /* Sprite가 존재하면 */ if (_tmpSprite != null) { /* Texture 지정 */ _loadObject.GetComponent <MeshRenderer>().material.mainTexture = Instantiate(_tmpSprite).texture; } /* Tiling 값 지정 */ _loadObject.GetComponent <MeshRenderer>().material.mainTextureScale = new Vector2(_tilingX, _tilingY); }
/*이 장소를 클릭 했을 경우*/ public void OnClickThisPlace() { if (_placeController._clickedPlace != null) { /* 클릭된 Place 객체의 MeshRenderer 컴포넌트를 담음 */ MeshRenderer _clickedMeshRenderer = _placeController._clickedPlace.GetComponent <Transform>().GetChild(0).GetComponent <MeshRenderer>(); /* Slot의 OriginNumber에 해당하는 Sprite 정보를 가져옴 */ Sprite _tmp = _itemListControl.GetImages(3, _thisItem._originNumber); /* 존재하지 않는 Sprite이면 */ if (_tmp == null) { /* 건물의 OriginNumber를 저장 */ int _buildingOriginNumber = _placeController._clickedPlace.GetComponent <Transform>().GetChild(0).GetComponent <ItemObject>()._thisItem._originNumber; /* 건물들의 3DObject가 들어있는 디렉터리 경로 지정 */ System.IO.DirectoryInfo _dir = new System.IO.DirectoryInfo(dir_path + "/Resources/Item/Wall/Build"); /* 디렉터리 탐색 */ foreach (System.IO.FileInfo _file in _dir.GetFiles()) { /* 파일의 OriginNumber와 일치하면 */ if (_file.Name.Split('_')[0] == _buildingOriginNumber.ToString() && _file.Extension.ToLower() == ".prefab") { /* Resource를 통해 건물 정보 저장 */ GameObject _building = Resources.Load <GameObject>("Item/Wall/Build/" + _file.Name.Substring(0, _file.Name.Length - 7)); /* 머터리얼을 복제해서 클릭된 건물의 머터리얼로 지정 */ _clickedMeshRenderer.material = Instantiate(_building.GetComponent <Transform>().GetChild(0).GetComponent <MeshRenderer>().sharedMaterial); break; //반복문 빠져나옴 } } } /* 존재하는 Sprite이면 */ else { /* Sprite 복제 */ Sprite _tmpClone = Instantiate(_tmp); /* Texture로 적용 */ _clickedMeshRenderer.material.mainTexture = _tmpClone.texture; } /* 클릭된 건물의 ItemObject에 PlaceNumber 지정 */ HistoryController.pushTileHist(_placeController._clickedPlace.GetComponent <Transform>().GetChild(0).GetComponent <ItemObject>()._thisItem._originNumber, _placeController._clickedPlace.GetComponent <Transform>().GetChild(0).GetComponent <ItemObject>()._thisItem._objectNumber, _placeController._clickedPlace.transform.GetChild(0).GetComponent <ItemObject>()._placeNumber); _placeController._clickedPlace.GetComponent <Transform>().GetChild(0).GetComponent <ItemObject>()._placeNumber = _thisItem._originNumber; } }