以前は、
ffmpeg -i filename.mov filename.mp4
という形で変換していたのですが、
MacのQuickTimeで再生しようとすると、
このファイルはQuickTime Playerと互換性がありません。
という感じで開くことができませんでした。
ffmpeg -i filename.mov -pix_fmt yuv420p filename.mp4
という感じでオプションをつけたら解決しました。
ffmpegの導入の仕方はこちら。
👆
引越し先はこちらです!
以前は、
ffmpeg -i filename.mov filename.mp4
という形で変換していたのですが、
MacのQuickTimeで再生しようとすると、
このファイルはQuickTime Playerと互換性がありません。
という感じで開くことができませんでした。
ffmpeg -i filename.mov -pix_fmt yuv420p filename.mp4
という感じでオプションをつけたら解決しました。
ffmpegの導入の仕方はこちら。
例えばUIボタンを押したときにSpriteにアタッチしているスクリプトのpublicメソッドを叩きたい時、JavaScriptならEventDispatcherを使ったりしていたんですが、Unityだとどうしたもんかと思っていました。
とりあえずdelegateをつかってイベントを渡してみることにしました。
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class ClickEventArgs : EventArgs { public string txt; } public class ButtonController : MonoBehaviour { private ClickEventArgs args = new ClickEventArgs(); public event EventHandler OnClickHandler = delegate { Debug.Log ("CLICK!"); }; void Start () { this.args = new ClickEventArgs (); } public void OnClick (string foo) { this.args.txt = foo; this.OnClickHandler (this, this.args); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SpriteController : MonoBehaviour { public void Say (string txt) { Debug.Log (txt); } }
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameController : MonoBehaviour { [SerializeField] private GameObject Button; [SerializeField] private GameObject Sprite; // Use this for initialization void Start () { Button.GetComponent<ButtonController> ().OnClickHandler += delegate (object sender, EventArgs args) { string txt = (args as ClickEventArgs).txt; Sprite.GetComponent<SpriteController> ().Say (txt); }; } }
こんな感じで引数を渡せました。
例えばUIボタンを押したときにSpriteにアタッチしているスクリプトのpublicメソッドを叩きたい時、JavaScriptならEventDispatcherを使ったりしていたんですが、Unityだとどうしたもんかと思っていました。
とりあえずdelegateをつかってイベントを渡してみることにしました。
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class ButtonController : MonoBehaviour { public event EventHandler OnClickHandler = delegate { Debug.Log ("CLICK!"); }; void Start () { } public void OnClick () { this.OnClickHandler (this, EventArgs.Empty); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SpriteController : MonoBehaviour { public void Say () { Debug.Log ("Sprite!"); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameController : MonoBehaviour { [SerializeField] private GameObject Button; [SerializeField] private GameObject Sprite; // Use this for initialization void Start () { Button.GetComponent<ButtonController> ().OnClickHandler += delegate { Sprite.GetComponent<SpriteController> ().Say (); }; } }
引数がなければこんな感じで実装できました。