/// <summary> /// 新規フレーム作成メソッド /// </summary> /// <param name="createIndex">作成フレームインデックス</param> /// <param name="isFrameDataExist">If set to <c>true</c> : すでにフレームデータが存在する(新規にフレームデータを作成しない)</param> private void CreateNewFrameImg(int createIndex, bool isFrameDataExist = false) { // フレーム作成.リストに登録. frameImgList.Insert(createIndex, GameObject.Instantiate(frameImgPrefub)); // 各フレームのインデックスを再設定(影響のあるフレームのみ) for (int i = createIndex; i < frameImgList.Count; i++) { frameImgList [i].GetComponent <FrameImgScript> ().index = i; } // フレーム表示領域の再設定 // Note...一度全フレームの親子関係を解除し,再度フレーム順に親子関係の設定を行う→新規フレームをインサートできる layoutArea.transform.DetachChildren(); foreach (GameObject frameImg in frameImgList) { frameImg.transform.SetParent(layoutArea.transform, false); frameImg.transform.localScale = new Vector3(1f, 1f, 1f); // ※スケールが崩れる場合があるので再設定 } // すでにフレームデータがあるのであればそのフレームを選択.ないのであれば作成. if (isFrameDataExist == false) { objects.motionData.CreateNewFrame(createIndex, selectedIndex); } else { objects.motionData.ChangeSelectFrame(createIndex); } // フレームとフレームデータの再関連付け for (int i = 0; i < frameImgList.Count; i++) { frameImgList [i].GetComponent <FrameImgScript> ().thisFrame = objects.motionData.frameList [i]; } // 新規作成フレームの遷移時間を再設定 FrameImgScript newFrameImg = frameImgList [createIndex].GetComponent <FrameImgScript> (); newFrameImg.sliderTime.value = newFrameImg.thisFrame.transitionTime; // 新規作成フレームをアクティブに(初期状態:非アクティブ) frameImgList [createIndex].SetActive(true); // 選択中のフレームインデックスを再設定.通知. selectedIndex = createIndex; CallSelectedFrameImgChanged(); }
/// <summary> /// フレーム入れ替えメソッド /// </summary> /// <param name="srcIndex">Source index.</param> /// <param name="dstIndex">Dst index.</param> public void FrameImgReplace(int srcIndex, int dstIndex) { // 移動前と移動後のオブジェクトを取得.移動前フレームデータのインスタンス作成. FrameImgScript srcFrameImg = frameImgList [srcIndex].GetComponent <FrameImgScript> (); FrameImgScript dstFrameImg = frameImgList [dstIndex].GetComponent <FrameImgScript>(); Frame srcFrame = new Frame(objects.motionData.frameList [srcIndex]); // フレームデータの入れ替え objects.motionData.frameList [srcIndex] = objects.motionData.frameList [dstIndex]; objects.motionData.frameList [dstIndex] = srcFrame; /*-- ここから入れ替えたフレームデータの情報を移動前フレームと移動後フレームに設定--*/ // フレームとフレームデータの再関連付け dstFrameImg.thisFrame = objects.motionData.frameList [dstIndex]; srcFrameImg.thisFrame = objects.motionData.frameList [srcIndex]; // 遷移時間の再割り当て dstFrameImg.sliderTime.value = dstFrameImg.thisFrame.transitionTime; srcFrameImg.sliderTime.value = srcFrameImg.thisFrame.transitionTime; // 移動後のフレームを選択.各種通知. selectedIndex = dstIndex; CallSelectedFrameImgChanged(false); objects.motionData.ChangeSelectFrame(selectedIndex); }