//絵文字などのグラフィックオブジェクトを作成 internal RectTransform AddGraphicObject(RectTransform parent, UguiNovelTextGenerator generator) { if (!IsSprite) { return(null); } Sprite sprite = FindSpirte(generator); if (sprite) { RectTransform child = UtageToolKit.AddChildGameObjectComponent <RectTransform>(parent, sprite.name); child.gameObject.hideFlags = HideFlags.DontSave; Image image = child.gameObject.AddComponent <Image>(); image.sprite = sprite; float scaleX, scaleY = 1.0f; scaleX = scaleY = 1.0f * FontSize / generator.EmojiData.Size; float w = sprite.rect.width * scaleX; float h = sprite.rect.height * scaleY; child.sizeDelta = new Vector2(w, h); child.localPosition = new Vector3(PositionX + w / 2, PositionY + h / 2, 0); return(child); } else { return(null); } }
Sprite2D CreateSprite(AssetFile texture) { Sprite2D sprite = UtageToolKit.AddChildGameObjectComponent <Sprite2D>(this.transform, System.IO.Path.GetFileNameWithoutExtension(texture.FileName)); sprite.SetTextureFile(texture, pixelsToUnits); return(sprite); }
void AddCharObject(Transform root, CharacterRenderInfo renderInfo, Color color, int order, int x0, int y0) { Vector2 pos = Vector2.zero; pos.x += x0 + renderInfo.x + GetCharacterRenderWidthOffsetX(renderInfo.fontInfo); pos.y += y0 + renderInfo.y + renderInfo.fontInfo.OffsetY * TextScale; SpriteRenderer rendrer = UtageToolKit.AddChildGameObjectComponent <SpriteRenderer>(root, "" + renderInfo.fontInfo.Char, pos / PixcelsToUnits, Vector2.one * TextScale); rendrer.gameObject.hideFlags = HideFlags.DontSave; rendrer.material = Font.Font.material; rendrer.sprite = renderInfo.fontInfo.Sprite; rendrer.color = color; rendrer.sortingOrder = this.OrderInLayer + order; rendrer.sortingLayerName = this.SortingLayer; if (renderInfo.fontInfo.CharInfo.flipped) { rendrer.transform.localEulerAngles = new Vector3(0, 0, 90); } else { rendrer.transform.localEulerAngles = new Vector3(180, 0, 0); } renderInfo.AddRenderObj(rendrer.gameObject); }
//旧バージョンとの互換性のための処理、メッセージウィンドウがなかったら作る public AdvUguiMessageWindowManager GetMessageWindowManagerCreateIfMissing() { AdvUguiMessageWindowManager[] managers = GetComponentsInChildren <AdvUguiMessageWindowManager>(true); if (managers.Length > 0) { return(managers[0]); } else { //旧バージョンとの互換性のため、なかったら作る AdvUguiMessageWindowManager manager = UtageToolKit.AddChildGameObjectComponent <AdvUguiMessageWindowManager>(this.transform, "MessageWindowManager"); RectTransform rect = manager.gameObject.AddComponent <RectTransform>(); rect.anchorMin = Vector2.zero; rect.anchorMax = Vector2.one; rect.sizeDelta = Vector2.zero; rect.SetAsFirstSibling(); AdvUguiMessageWindow[] windows = GetComponentsInChildren <AdvUguiMessageWindow>(true); foreach (var window in windows) { window.transform.SetParent(rect, true); if (window.transform.localScale == Vector3.zero) { window.transform.localScale = Vector3.one; } } return(manager); } }
/// <summary> /// 初期化 /// </summary> /// <param name="setting">レイヤー設定データ</param> public void InitLayerSetting(AdvLayerSetting setting) { foreach (AdvLayerSettingData item in setting.List) { AdvLayer layer = UtageToolKit.AddChildGameObjectComponent<AdvLayer>(this.transform, item.Name); layer.Init(item, PixelsToUnits); layers.Add(item.Name, layer); if (item == setting.DefaultBGLayer) { bgLayer = layer; } //キャラクターレイヤー登録 if (item.Type == AdvLayerSettingData.LayerType.Character) { characterLayers.Add(item.Name, layer); if (item == setting.DefaultCharacterLayer) { defaultCharacterLayer = layer; } } //スプライトレイヤー登録 if (item.Type == AdvLayerSettingData.LayerType.Sprite) { spriteLayers.Add(item.Name, layer); if (item == setting.DefaultSpriteLayer) { defaultSpriteLayer = layer; } } } }
Sprite2D CreateSprite(GraphicInfoList graphic) { GraphicInfo texture = graphic.Main; Sprite2D sprite = UtageToolKit.AddChildGameObjectComponent <Sprite2D>(this.transform, FilePathUtil.GetFileNameWithoutExtension(texture.File.FileName)); sprite.SetTextureFile(texture, PixelsToUnits); sprite.LocalOrderInLayer = Layer.SettingData.Order; return(sprite); }
//指定の名前のストリームを取得。なければ作成。 SoundStreamFade GetStreamAndCreateIfMissing(string name) { SoundStreamFade stream; if (!streamTbl.TryGetValue(name, out stream)) { stream = UtageToolKit.AddChildGameObjectComponent <SoundStreamFade>(CachedTransform, name); streamTbl.Add(name, stream); } return(stream); }
//スプライトを名前から検索(なければ作成) AdvFadeSprites GetSpriteCreateIfMissing(string spriteName) { var sprite = FindSprite(spriteName); if (sprite == null) { sprite = UtageToolKit.AddChildGameObjectComponent <AdvFadeSprites>(this.transform, spriteName); sprite.Init(pixelsToUnits); sprite.LocalOrderInLayer = sprites.Count; sprites.Add(sprite); } return(sprite); }
//起動時の初期化 internal AdvGraphicGroup(AdvLayerSettingData.LayerType type, AdvLayerSetting setting, AdvGraphicManager manager) { this.type = type; foreach (var item in setting.List) { if (item.Type == type) { AdvGraphicLayer layer = UtageToolKit.AddChildGameObjectComponent <AdvGraphicLayer>(manager.transform, item.Name); layer.Init(manager, item); layers.Add(layer); if (item.IsDefault) { defaultLayer = layer; } } } }
static void CreateManagers(CustomProjectSetting customProjectSetting, int width, int height) { GameObject go = new GameObject("Manageres"); Selection.activeGameObject = go; BootCustomProjectSetting cutomProjectSetting = go.AddComponent <BootCustomProjectSetting>(); cutomProjectSetting.CustomProjectSetting = customProjectSetting; go.AddComponent <DontDestoryOnLoad>(); //サウンドマネージャー UtageToolKit.AddChildGameObjectComponent <SoundManager>(go.transform, "SoundManager"); //ファイルマネージャー AssetFileManager fileManager = UtageToolKit.AddChildGameObjectComponent <AssetFileManager>(go.transform, "FileManager"); fileManager.FileIOManger = fileManager.gameObject.AddComponent <FileIOManager>(); //カメラマネージャー CameraManager cameraManager = UtageToolKit.AddChildGameObjectComponent <CameraManager>(go.transform, "CameraManager"); cameraManager.InitOnCreate(width, height); //全体画面クリア用 Camera clearCamera = UtageToolKit.AddChildGameObjectComponent <Camera>(cameraManager.transform, "ClearCamera"); clearCamera.depth = -1; clearCamera.clearFlags = CameraClearFlags.SolidColor; clearCamera.cullingMask = 0; clearCamera.backgroundColor = new Color(0, 0, 0, 0); //2D画面用 Camera camera2D = UtageToolKit.AddChildGameObjectComponent <Camera>(cameraManager.transform, "2DCamera"); camera2D.clearFlags = CameraClearFlags.Nothing; camera2D.orthographic = true; camera2D.orthographicSize = 3; camera2D.cullingMask = 1 << LayerMask.NameToLayer("Default"); camera2D.gameObject.AddComponent <AudioListener>(); cameraManager.AddCamera2D(camera2D); camera2D.gameObject.AddComponent <CameraInput2D>(); Selection.activeGameObject = go; Undo.RegisterCreatedObjectUndo(go, "CreateManageres"); }
AdvLayer AddLayer(AdvLayerSettingData data) { AdvLayer layer = UtageToolKit.AddChildGameObjectComponent <AdvLayer>(this.transform, data.Name); layer.Init(data, PixelsToUnits); layers.Add(data.Name, layer); //キャラクターレイヤー登録 if (data.Type == AdvLayerSettingData.LayerType.Character) { characterLayers.Add(data.Name, layer); } //スプライトレイヤー登録 if (data.Type == AdvLayerSettingData.LayerType.Sprite) { spriteLayers.Add(data.Name, layer); } return(layer); }
internal SoundStream Play(AudioClip clip, float fadeTime, float masterVolume, float volume, bool isLoop, bool isStreaming, Action callBackEnd) { if (null != next) { GameObject.Destroy(next.gameObject); } if (null == current) { current = UtageToolKit.AddChildGameObjectComponent <SoundStream>(this.transform, clip.name); //即時再生 current.Play(clip, masterVolume, volume, isLoop, isStreaming, callBackEnd); return(current); } else { //フェードアウト後に再生 current.FadeOut(fadeTime); next = UtageToolKit.AddChildGameObjectComponent <SoundStream>(this.transform, clip.name); next.Ready(clip, masterVolume, volume, isLoop, isStreaming, callBackEnd); return(next); } }
void CreateAdvEngile() { GameObject go = new GameObject("AdvEngine"); AdvEngine engine = go.AddComponent <AdvEngine>(); //レイヤーマネージャー AdvLayerManager layerManager = UtageToolKit.AddChildGameObjectComponent <AdvLayerManager>(engine.transform, "LayerManager"); Node2D node2dLayerManager = layerManager.GetComponent <Node2D>(); node2dLayerManager.SortKey = "LayerManager"; //トランジションマネージャー AdvTransitionManager transitionManager = UtageToolKit.AddChildGameObjectComponent <AdvTransitionManager>(engine.transform, "TransitionManager"); transitionManager.GetComponent <Node2D>().SortKey = "Transition"; Sprite2D transtionBg = UtageToolKit.AddChildGameObjectComponent <Sprite2D>(transitionManager.transform, "Bg"); transtionBg.Sprite = transitionFadeBg; transtionBg.SizeType = Sprite2D.SpriteSizeType.StrechBoth; //UIマネージャー AdvUiManager uiManager = UtageToolKit.AddChildGameObjectComponent <AdvUiManager>(engine.transform, "UI"); //インプットマネージャー AdvLegacyInputManager input = UtageToolKit.AddChildGameObjectComponent <AdvLegacyInputManager>(uiManager.transform, "InputManager"); input.InitOnCreate(engine, 1.0f / 100 * gameScreenWidth, 1.0f / 100 * gameScreenHeight); input.GetComponent <Node2D>().SortKey = "InputManager"; //メッセージウィンドウ float fontSize = 30; float windowWidth = msgWindowSprite.rect.width; float windowHeight = msgWindowSprite.rect.height; AdvUiMessageWindow msgWindow = UtageToolKit.AddChildGameObjectComponent <AdvUiMessageWindow>(uiManager.transform, "MessageWindow"); msgWindow.GetComponent <Node2D>().SortKey = "MessageWindow"; GameObject windowRootChildren = UtageToolKit.AddChildGameObject(msgWindow.transform, "RootChildren"); TextArea2D messageText = UtageToolKit.AddChildGameObjectComponent <TextArea2D>(windowRootChildren.transform, "MessageText"); messageText.Type = TextArea2D.ViewType.Outline; messageText.Font = font; messageText.text = "Message"; messageText.Size = fontSize; messageText.LayoutType = TextArea2D.Layout.TopLeft; messageText.MaxWidth = (int)(windowWidth - fontSize * 4); messageText.MaxHeight = (int)(windowHeight - (fontSize * 2 + 50)); messageText.transform.localPosition = new Vector3(-(float)messageText.MaxWidth / 2 / 100, (windowHeight / 2 - (fontSize + 40)) / 100, 0); messageText.LetterSpace = 2; messageText.LineSpace = 8; messageText.WordWrapType = TextArea2D.WordWrap.Default | TextArea2D.WordWrap.JapaneseKinsoku; messageText.LocalOrderInLayer = 10; //名前表示 TextArea2D nameText = UtageToolKit.AddChildGameObjectComponent <TextArea2D>(windowRootChildren.transform, "NameText"); nameText.Type = TextArea2D.ViewType.Outline; nameText.Font = font; nameText.text = "Name"; nameText.Size = 30; nameText.LayoutType = TextArea2D.Layout.TopLeft; nameText.transform.localPosition = new Vector3(-(float)messageText.MaxWidth / 2 / 100, (windowHeight / 2 - 25) / 100, 0); nameText.LocalOrderInLayer = 10; //閉じるボタン if (isEnableCloseButton) { LegacyUiButton closeButton = UtageToolKit.AddChildGameObjectComponent <LegacyUiButton>(windowRootChildren.transform, "CloseButton"); Sprite2D closeButtonBg = UtageToolKit.AddChildGameObjectComponent <Sprite2D>(closeButton.transform, "Bg"); closeButtonBg.Sprite = closeButtonSprite; closeButton.transform.localPosition = new Vector3(((windowWidth - closeButtonSprite.rect.width) / 2 - 10) / 100, ((windowHeight - closeButtonSprite.rect.height) / 2 - 5) / 100, -0.01f); closeButton.Target = msgWindow.gameObject; closeButton.FunctionName = "OnTapCloseWindow"; closeButton.Se = clickSe; } //メッセージウィンドウ背景 Node2D windowBgRoot = UtageToolKit.AddChildGameObjectComponent <Node2D>(windowRootChildren.transform, "WindowRoot"); Sprite2D windowBg = UtageToolKit.AddChildGameObjectComponent <Sprite2D>(windowBgRoot.transform, "Bg"); windowBg.Sprite = msgWindowSprite; msgWindow.InitOnCreate(engine, messageText, nameText, windowRootChildren, windowBgRoot); msgWindow.transform.localPosition = new Vector3(0, (-gameScreenHeight + windowHeight) / 2 / 100, 0); //選択肢 AdvUiSelectionManager selection = UtageToolKit.AddChildGameObjectComponent <AdvUiSelectionManager>(uiManager.transform, "Selection"); selection.InitOnCreate(engine, selectionItemPrefab); selection.GetComponent <Node2D>().SortKey = "Selection"; selection.ListView.ClipWidthPx = Mathf.Max(gameScreenWidth / 2, gameScreenWidth - 100); selection.ListView.ClipHeightPx = Mathf.Max(gameScreenHeight / 2, gameScreenHeight - 100); selection.ListView.Type = LegacyUiListView.LitViewType.Vertical; //バックログ AdvUiBacklogManager backLogManger = null; if (isEnableBackLog) { LegacyUiButton openButton = UtageToolKit.AddChildGameObjectComponent <LegacyUiButton>(windowRootChildren.transform, "BackLogButton"); UtageToolKit.AddChildGameObjectComponent <Sprite2D>(openButton.transform, "Bg").Sprite = backLogButtonSprite; TextArea2D text = UtageToolKit.AddChildGameObjectComponent <TextArea2D>(openButton.transform, "Text"); text.Font = font; text.text = "Log"; text.LocalOrderInLayer = 10; openButton.transform.localPosition = new Vector3(((windowWidth - backLogButtonSprite.rect.width) / 2 - closeButtonSprite.rect.width - 20) / 100, ((windowHeight - closeButtonSprite.rect.height) / 2 - 5) / 100, -0.01f); openButton.Target = msgWindow.gameObject; openButton.FunctionName = "OnTapBackLog"; openButton.Se = clickSe; backLogManger = UtageToolKit.AddChildGameObjectComponent <AdvUiBacklogManager>(uiManager.transform, "BackLog"); backLogManger.InitOnCreate(engine, backLogItemPrefab); backLogManger.GetComponent <Node2D>().SortKey = "BackLog"; backLogManger.ListView.ClipWidthPx = Mathf.Max(gameScreenWidth / 2, gameScreenWidth - 100); backLogManger.ListView.ClipHeightPx = Mathf.Max(gameScreenHeight / 2, gameScreenHeight - 100); backLogManger.ListView.Type = LegacyUiListView.LitViewType.Vertical; backLogManger.ListView.IsRepositionReverse = true; Sprite2D filter = UtageToolKit.AddChildGameObjectComponent <Sprite2D>(backLogManger.transform, "filter"); filter.Sprite = backLogFilterSprite; filter.SizeType = Sprite2D.SpriteSizeType.StrechBoth; filter.LocalColor = Color.black; filter.LocalAlpha = 0.5f; float arrowY = (float)backLogManger.ListView.ClipHeightPx / 100 / 2; Sprite2D minArrow = UtageToolKit.AddChildGameObjectComponent <Sprite2D>(backLogManger.transform, "MinArrow"); minArrow.Sprite = backLogScrollUpArrow; minArrow.LocalOrderInLayer = 30; minArrow.transform.localPosition = new Vector3(0, arrowY); backLogManger.ListView.MinArrow = minArrow.gameObject; Sprite2D maxArrow = UtageToolKit.AddChildGameObjectComponent <Sprite2D>(backLogManger.transform, "MaxArrow"); maxArrow.Sprite = backLogScrollUpArrow; maxArrow.LocalOrderInLayer = 30; maxArrow.transform.localPosition = new Vector3(0, -arrowY); maxArrow.transform.localEulerAngles = new Vector3(0, 0, 180); backLogManger.ListView.MaxArrow = maxArrow.gameObject; LegacyUiButton closeButton = UtageToolKit.AddChildGameObjectComponent <LegacyUiButton>(backLogManger.transform, "CloseButton"); Sprite2D closeButtonBg = UtageToolKit.AddChildGameObjectComponent <Sprite2D>(closeButton.transform, "Bg"); closeButtonBg.Sprite = backLogCloseButtonSprite; closeButton.transform.localPosition = new Vector3((-1.0f * (gameScreenWidth - backLogCloseButtonSprite.rect.width) / 2 + 5) / 100, ((gameScreenHeight - backLogCloseButtonSprite.rect.height) / 2 - 5) / 100, -0.01f); closeButton.Target = backLogManger.gameObject; closeButton.FunctionName = "OnTapBack"; closeButton.Se = clickSe; TextArea2D textClose = UtageToolKit.AddChildGameObjectComponent <TextArea2D>(closeButton.transform, "Text"); textClose.Font = font; textClose.text = ""; textClose.LocalOrderInLayer = 10; LegacyLocalize localize = textClose.gameObject.AddComponent <LegacyLocalize>(); localize.Key = SystemText.Back.ToString(); } engine.InitOnCreate(layerManager, transitionManager, uiManager); AdvLegacyUiManager legacyUiManager = uiManager as AdvLegacyUiManager; if (legacyUiManager != null) { legacyUiManager.InitOnCreate(engine, msgWindow, selection, backLogManger); } Selection.activeGameObject = go; Undo.RegisterCreatedObjectUndo(go, "CreateAdvEngile"); }
/// <summary> /// 指定のコンポーネントつきのGameObjectを作成して子として追加 /// </summary> /// <typeparam name="T">コンポーネントの型</typeparam> /// <param name="parent">親</param> /// <param name="name">作成する子の名前</param> /// <param name="localPosition">子に設定するローカル座標</param> /// <returns>追加済みの子</returns> public static T AddChildGameObjectComponent <T>(Transform parent, string name, Vector3 localPosition) where T : Component { return(UtageToolKit.AddChildGameObjectComponent <T>(parent, name, localPosition, Vector3.one)); }