はじめに
iOS14から導入されたUIColorPickerViewControllerをUnityから使いたかったのでPluginを書きました。
レポジトリ
Unitypackage
UIColorPickerManager.unitypackage
Sample
public void Show(){
Color currentColor = Color.white;
UIColorPickerManager.Show(currentColor, OnSelectColor, OnFinish);
}
// call when color selected.
void OnSelectColor(Color selectedColor){
// ...
}
// call UIColorPickerViewController finished.
void OnFinish(){
}
UIColorPickerManager.Show
UIColorPickerManager.Show
にはいくつかのオーバーライドがあります。
選択された色をColorオブジェクトで受け取る
void Show (
Color currentColor,
OnColorSelectedCallback onColorSelectedCallback, // Colorオブジェクトを受け取るコールバック関数
OnFinishCallback onFinishCallback)
選択された色をRGBAで受け取る場合
void Show (
Color currentColor,
OnRGBColorSelectedCallback onRGBColorSelectedCallback, // RGBAを受け取るコールバック関数
OnFinishCallback onFinishCallback)
選択された色をColorオブジェクトで受け取り、iOS14未満の時の処理を必要とする場合
void Show (
Color currentColor,
OnColorSelectedCallback onColorSelectedCallback,
OnFinishCallback onFinishCallback,
OnEarlierIOSVersionsCallback onEarlierIOSVersionsCallback)
選択された色をRGBAで受け取り、iOS14未満の時の処理を必要とする場合
void Show (
Color currentColor,
OnRGBColorSelectedCallback onRGBColorSelectedCallback,
OnFinishCallback onFinishCallback,
OnEarlierIOSVersionsCallback onEarlierIOSVersionsCallback)
参考:上記のコードで使われているdelegateの定義
// - colorPickerViewControllerDidSelectColor: 用コールバック
public delegate void OnColorSelectedCallback(Color color);
public delegate void OnRGBColorSelectedCallback (float r, float g, float b, float a);
// - colorPickerViewControllerDidFinish: 用コールバック
public delegate void OnFinishCallback();
// @available(iOS 14.0, *) がfalseの時用コールバック
public delegate void OnEarlierIOSVersionsCallback();
ライセンス
ライセンスはMITです。
補足
いないかもしれませんが、ソースコードを読みたいという方がいれば、
先に、 [Unity]ネイティブプラグインからコールバック関数を呼ぶ[iOS]
という記事を読むことをお勧めします。このプラグインは、その記事の応用になっています。