internal AdvGraphicOperaitonArg(AdvCommand command, GraphicInfoList graphic, float fadeTime, bool isNoPtattern = false) { this.RowData = command.RowData; this.Graphic = graphic; this.FadeTime = fadeTime; this.IsNoPtattern = isNoPtattern; this.Arg2 = command.ParseCellOptional <string>(AdvColumnName.Arg2, ""); this.Arg3 = command.ParseCellOptional <string>(AdvColumnName.Arg3, ""); this.Arg4 = command.ParseCellOptional <string>(AdvColumnName.Arg4, ""); this.Arg5 = command.ParseCellOptional <string>(AdvColumnName.Arg5, ""); float x; if (float.TryParse(Arg4, out x)) { this.X = x; } float y; if (float.TryParse(Arg5, out y)) { this.Y = y; } else { MotionPlayType type; if (UtageToolKit.TryParaseEnum <MotionPlayType>(Arg5, out type)) { PlayType = type; } } }
//各アセットタイプに対応する拡張子を追加 internal void AddAssetFileTypeExtensionsSub(AssetFileType type, string[] extensions) { switch (type) { case AssetFileType.Text: textExtArray = UtageToolKit.AddArrayUnique <string>(textExtArray, extensions); break; case AssetFileType.Bytes: binaryExtArray = UtageToolKit.AddArrayUnique <string>(binaryExtArray, extensions); break; case AssetFileType.Texture: textureExtArray = UtageToolKit.AddArrayUnique <string>(textureExtArray, extensions); break; case AssetFileType.Sound: soundExtArray = UtageToolKit.AddArrayUnique <string>(soundExtArray, extensions); break; case AssetFileType.Csv: csvExtArray = UtageToolKit.AddArrayUnique <string>(csvExtArray, extensions); break; case AssetFileType.UnityObject: default: break; } }
/// <summary> /// 文字列からピボットを解析する /// </summary> /// <param name="text">テキスト</param> /// <param name="defaultValue">デフォルト値</param> /// <returns>解析したピボット値。文字列が設定されてなかったらデフォルト値を。解析できなかったら例外を投げる</returns> public static Vector2 ParsePivotOptional(string text, Vector2 defaultValue) { //何も設定がなければデフォルト値を if (string.IsNullOrEmpty(text)) { return(defaultValue); } Vector2 pivot = Vector2.one * 0.5f; Pivot pivotEnum; if (UtageToolKit.TryParaseEnum <Pivot>(text, out pivotEnum)) { return(PivotUtil.PivotEnumToVector2(pivotEnum)); } if (ParserUtil.TryParseVector2Optional(text, pivot, out pivot)) { return(pivot); } else { throw new System.Exception(LanguageErrorMsg.LocalizeTextFormat(ErrorMsg.PivotParse, text)); } }
//指定のページのアイテムを作成 public void CreateItems(int page) { this.currentPage = page; this.pageCarouselToggles.CurrentIndex = page; ///いったん削除 ClearItems(); int pageTopIndex = MaxItemPerPage * CurrentPage; for (int i = 0; i < MaxItemPerPage; ++i) { int index = pageTopIndex + i; if (index >= maxItemNum) { break; } GameObject go = UtageToolKit.AddChildPrefab(grid.transform, itemPrefab); items.Add(go); if (CallbackCreateItem != null) { CallbackCreateItem(go, index); } } }
//絵文字などのグラフィックオブジェクトを作成 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); } }
//旧バージョンとの互換性のための処理、メッセージウィンドウがなかったら作る 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> /// Oggをサポートしているプラットフォームかどうか /// WebPlayer、StandAloneではOggが対応。MOBILEはMP3が対応なので、拡張子を入れ替える /// http://docs-jp.unity3d.com/Documentation/ScriptReference/WWW.GetAudioClip.html /// </summary> /// <returns>サポートしていればtrue</returns> public static bool IsSupportOggPlatform() { // WebPlayerの対応が5.4で終了したため5.4未満かどうかで処理を分ける. 2017/10/30 yoshida written. #if UNITY_5_4_OR_NEWER #if UNITY_STANDALONE || UNITY_WEBGL return(true); #else if (UtageToolKit.IsPlatformStandAlone()) { //無料版用にDLL化したときのため return(true); } return(false); #endif #else #if UNITY_STANDALONE || UNITY_WEBPLAYER || UNITY_WEBGL return(true); #else if (Application.isWebPlayer || UtageToolKit.IsPlatformStandAlone()) { //無料版用にDLL化したときのため return(true); } return(false); #endif #endif }
//コマンド待機中 void OnUpdatePreWaitingCommand(AdvCommand command) { if (Disable) { return; } if (!IsWaitInputCommand(command)) { return; } time += Time.deltaTime; if (time >= waitTime) { if (command is AdvCommandWaitInput) { Engine.UiManager.IsInputTrig = true; } if (command is AdvCommandSendMessage) { UtageToolKit.SafeSendMessage(command, engine.ScenarioPlayer.SendMessageTarget, "OnAgingInput"); } if (command is AdvCommandMovie) { Engine.UiManager.IsInputTrig = true; } if (command is AdvCommandCharacter || command is AdvCommandText) { if (Engine.SoundManager.IsPlayingVoice()) { Engine.Page.InputSendMessage(); } } } }
/// <summary> /// アイテムを作成 /// </summary> /// <param name="itemNum">アイテムの数</param> /// <param name="callbackCreateItem">アイテムが作成されるときに呼ばれるコールバック</param> public void CreateItems(int itemNum, System.Action <GameObject, int> callbackCreateItem) { Content.anchoredPosition = Vector2.zero; ScrollRect.velocity = Vector2.zero; ClearItems(); for (int i = 0; i < itemNum; ++i) { GameObject go = UtageToolKit.AddChildPrefab(Content, ItemPrefab.gameObject); items.Add(go); if (null != callbackCreateItem) { callbackCreateItem(go, i); } } PositionGroup.Reposition(); bool isStopScrool = IsContentInnerScrollRect() && IsStopScroolWithAllInnner; switch (ScrollType) { case Type.Horizontal: ScrollRect.horizontal = !isStopScrool; ScrollRect.vertical = false; break; case Type.Vertical: ScrollRect.horizontal = false; ScrollRect.vertical = !isStopScrool; break; } }
//旧バージョン(LayerManagerだったころ)のレイヤーデータ読み込み internal void ReadOld(BinaryReader reader) { //Transofom,Colorを空読み込み Vector3 pos = new Vector3(); Vector3 euler = new Vector3(); Vector3 scale = new Vector3(); UtageToolKit.ReadLocalTransform(reader, out pos, out euler, out scale); UtageToolKit.ReadColor(reader); //Tween情報を空読み込み int tweenCount = reader.ReadInt32(); for (int i = 0; i < tweenCount; ++i) { AdvTweenPlayer tween = this.gameObject.AddComponent <AdvTweenPlayer>() as AdvTweenPlayer; tween.Read(reader, Manager.PixelsToUnits); Destroy(tween); } //各スプライトの読み込み int count = reader.ReadInt32(); for (int i = 0; i < count; ++i) { string name = reader.ReadString(); GameObject go = UtageToolKit.AddChildGameObject(this.transform, name); AdvGraphicObject2DSprite obj = go.AddComponent <AdvGraphicObject2DSprite>(); obj.Init(this); currentGraphics.Add(name, obj); obj.ReadOld(reader); } //デフォルトオブジェクトを設定 defaultObject = Find(reader.ReadString()); }
//マウスの入力処理 void MouseOperation() { if (UtageToolKit.IsPlatformStandAloneOrEditor() || Application.isWebPlayer) { if (null == touchesMouse) { return; } if (!Input.mousePresent) { return; } Vector3 point = cachedCamera.ScreenToWorldPoint(Input.mousePosition); //有効なボタンだけ処理する if (isEnableMouseButtonLeft) { MouseOperation(0, point); } if (isEnableMouseButtonRight) { MouseOperation(1, point); } if (isEnableMouseButtonCenter) { MouseOperation(2, point); } MouseMove(); } }
SoundStreamFade CreateSoundStreamFade(string name) { GameObject go = UtageToolKit.AddChild(this.transform, new GameObject(name)); SoundStreamFade stream = go.AddComponent <SoundStreamFade>(); return(stream); }
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 string defaultExt; //デフォルトの拡張子 public string FileNameToPath(string fileName) { if (string.IsNullOrEmpty(fileName)) { return(fileName); } string path; //既に絶対URLならそのまま if (UtageToolKit.IsAbsoluteUri(fileName)) { path = fileName; } else { try { //拡張子がなければデフォルト拡張子を追加 if (string.IsNullOrEmpty(System.IO.Path.GetExtension(fileName))) { fileName += defaultExt; } path = defaultDir + fileName; } catch (System.Exception e) { Debug.LogError(fileName + " " + e.ToString()); path = defaultDir + fileName; } } //プラットフォームが対応する拡張子にする(mp3とoggを入れ替え) return(ExtensionUtil.ChangeSoundExt(path)); }
public AdvEffectDataShake(StringGridRow row) { this.targetName = AdvParser.ParseCellOptional <string>(row, AdvColumnName.Arg1, ""); if (!UtageToolKit.TryParaseEnum <TargetType>(this.targetName, out this.targetType)) { this.targetType = TargetType.Default; } this.targetName = AdvParser.ParseCellOptional <string>(row, AdvColumnName.Arg2, this.targetName); string defaultStr = " x=30 y=30"; string arg = AdvParser.ParseCellOptional <string>(row, AdvColumnName.Arg3, defaultStr); if (!arg.Contains("x=") && !arg.Contains("y=")) { arg += defaultStr; } string easeType = AdvParser.ParseCellOptional <string>(row, AdvColumnName.Arg4, ""); string loopType = AdvParser.ParseCellOptional <string>(row, AdvColumnName.Arg5, ""); this.tweenData = new iTweenData(iTweenType.ShakePosition.ToString(), arg, easeType, loopType); this.waitType = AdvParser.ParseCellOptional <WaitType>(row, AdvColumnName.Arg6, WaitType.Wait); if (!string.IsNullOrEmpty(tweenData.ErrorMsg)) { Debug.LogError(row.ToErrorString(tweenData.ErrorMsg)); } }
/// <summary> /// 全て消去 /// </summary> public void Clear() { ResetLayer(); sprites.Clear(); UtageToolKit.DestroyChildren(this.transform); DefaultSprite = null; }
internal virtual void Write(BinaryWriter writer) { writer.Write(Version); UtageToolKit.WriteLocalTransform(this.transform, writer); this.EffectColors.Write(writer); //無限ループのTweenがある場合は、Tween情報を書き込む AdvTweenPlayer[] tweenArray = this.gameObject.GetComponents <AdvTweenPlayer>() as AdvTweenPlayer[]; int tweenCount = 0; foreach (var tween in tweenArray) { if (tween.IsEndlessLoop) { ++tweenCount; } } writer.Write(tweenCount); foreach (var tween in tweenArray) { if (tween.IsEndlessLoop) { tween.Write(writer); } } OnWrite(writer); }
/// <summary> /// セーブデータ用のバイナリ書き込み /// </summary> /// <param name="writer">バイナリライター</param> public void WriteSaveData(BinaryWriter writer) { UtageToolKit.WriteLocalTransform(this.transform, writer); UtageToolKit.WriteColor(this.LocalColor, writer); //無限ループのTweenがある場合は、Tween情報を書き込む iTweenPlayer[] tweenArray = this.gameObject.GetComponents <iTweenPlayer>() as iTweenPlayer[]; int tweenCount = 0; foreach (var tween in tweenArray) { if (tween.IsEndlessLoop) { ++tweenCount; } } writer.Write(tweenCount); foreach (var tween in tweenArray) { if (tween.IsEndlessLoop) { tween.Write(writer); } } //各スプライトの書き込み writer.Write(sprites.Count); foreach (var sprite in sprites) { writer.Write(sprite.name); sprite.Write(writer); } writer.Write(DefaultSprite != null ? DefaultSprite.name : ""); }
/// <summary> /// セーブデータ用のバイナリ読みこみ /// </summary> /// <param name="reader">バイナリリーダー</param> public void ReadSaveData(BinaryReader reader) { UtageToolKit.ReadLocalTransform(this.transform, reader); this.LocalColor = UtageToolKit.ReadColor(reader); //Tweenがある場合は、Tween情報を読み込む int tweenCount = reader.ReadInt32(); for (int i = 0; i < tweenCount; ++i) { iTweenPlayer tween = this.gameObject.AddComponent <iTweenPlayer>() as iTweenPlayer; tween.Read(reader, pixelsToUnits); } //各スプライトの読み込み int count = reader.ReadInt32(); for (int i = 0; i < count; ++i) { string name = reader.ReadString(); AdvFadeSprites sprite = GetSpriteCreateIfMissing(name); sprite.Read(reader); } string defaultSpriteName = reader.ReadString(); if (!string.IsNullOrEmpty(defaultSpriteName)) { DefaultSprite = FindSprite(defaultSpriteName); } }
//オーディオクリップをSEとして再生 SoundSe PlaySeClip(AudioClip clip, float volume, string label, SoundPlayMode playMode) { if (string.IsNullOrEmpty(label)) { label = clip.name; } switch (playMode) { case SoundPlayMode.Add: break; case SoundPlayMode.Cancel: if (IsPlayingSe(label)) { Debug.Log("Cancel"); StopSe(label, 0.02f); } break; case SoundPlayMode.NoPlay: if (IsPlayingSe(label)) { return(null); } break; } GameObject go = UtageToolKit.AddChild(CachedTransform, new GameObject(label)); SoundSe se = go.AddComponent <SoundSe>(); se.Init(clip, volume); return(se); }
void SetSliderValue(float v) { if (Mathf.Approximately(sliderValue, v)) { //ほぼ同じ値 return; } sliderValue = v; if (null != bar) { switch (direction) { case Direction.Horizontal: bar.Width = DefaultBarWidth * SliderValue; break; case Direction.Vertical: default: bar.Height = DefaultBarHeight * SliderValue; break; } } UtageToolKit.SafeSendMessage(sliderValue, Target, FunctionName, false); }
/// <summary> /// アイテムを追加 /// </summary> /// <param name="itemNum">アイテムの数</param> /// <param name="callbackCreateItem">アイテムが作成されるときに呼ばれるコールバック</param> public void AddItems(List <GameObject> items) { foreach (var item in items) { UtageToolKit.AddChild(Content, item); } }
Sprite2D CreateSprite(AssetFile texture) { Sprite2D sprite = UtageToolKit.AddChildGameObjectComponent <Sprite2D>(this.transform, System.IO.Path.GetFileNameWithoutExtension(texture.FileName)); sprite.SetTextureFile(texture, pixelsToUnits); return(sprite); }
/// <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; } } } }
/// <summary> /// 文字列からカラーデータを解析する /// </summary> /// <param name="text">テキスト</param> /// <param name="color">カラー</param> /// <returns>解析に成功したらtrue。書式間違いなどで解析できなかったらfalse</returns> public static bool TryParsePivot(string text, out Vector2 pivot) { pivot = Vector2.one * 0.5f; if (string.IsNullOrEmpty(text)) { return(false); } Pivot pivotEnum; if (UtageToolKit.TryParaseEnum <Pivot>(text, out pivotEnum)) { pivot = PivotEnumToVector2(pivotEnum); return(true); } bool ret = false; string[] strings; { char[] separator = { ' ' }; strings = text.Split(separator, System.StringSplitOptions.RemoveEmptyEntries); } foreach (string str in strings) { char[] separator = { '=' }; string[] tags = str.Split(separator, System.StringSplitOptions.RemoveEmptyEntries); if (tags.Length == 2) { switch (tags[0]) { case "x": if (!float.TryParse(tags[1], out pivot.x)) { return(false); } ret = true; break; case "y": if (!float.TryParse(tags[1], out pivot.y)) { return(false); } ret = true; break; default: return(false); } } else { return(false); } } return(ret); }
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); }
//全てクリア void ClearAll() { ListView.ClearItems(); foreach (var item in Items) { UtageToolKit.SafeDestroy(item); } Items.Clear(); }
public Texture2D CaptureScreen() { int x = Mathf.CeilToInt(currentRect.x * Screen.width); int y = Mathf.CeilToInt(currentRect.y * Screen.height); int width = Mathf.FloorToInt(currentRect.width * Screen.width); int height = Mathf.FloorToInt(currentRect.height * Screen.height); return(UtageToolKit.CaptureScreen(new Rect(x, y, width, height))); }
public Texture2D CaptureScreen() { int x = (int)(currentRect.x * Screen.width); int y = (int)(currentRect.y * Screen.height); int width = (int)(currentRect.width * Screen.width); int height = (int)(currentRect.height * Screen.height); return(UtageToolKit.CaptureScreen(new Rect(x, y, width, height))); }
//閉じる処理をキャンセル protected virtual void CancelClosing() { ITransition[] transitions = UtageToolKit.GetInterfaceCompoents <ITransition>(this.gameObject); foreach (ITransition transition in transitions) { transition.CancelClosing(); } RestoreCanvasGroupInput(); EndClose(); }