jQuery elementを配列に変換する方法

<a>タグのhrefを調べたい場合

$('a').each(function(){
  console.log($(this).attr('href'));
}

のような感じで使うことが多かったのですが、使いたいプラグインの関係で配列に変換する必要があり、簡単な方法を調べてみました。

ということで、mapmakeArrayを使って次のような感じで配列に変換できるみたいです。

var elems = $('a').map(function(){ return $(this).attr('href'); });
var ar = $.makeArray(elems);

console.log(ar);

実行結果

Array(3) [ "https://example.com/", "https://example.net/", "https://example.org/" ]

リンク

jQuery.makeArray() | jQuery API Documentation
https://api.jquery.com/jquery.makeArray/

.map() | jQuery API Documentation
https://api.jquery.com/map/


jQuery elementをわざわざ配列に変換する機会は多くないと思いますが、必要になったら参考にしてみてください。

Unityでスクリプトを使って複数枚のSpriteに分割する方法

UnityではSprite ModeをMultipleに設定することで、1枚の画像ファイルから複数枚のSpriteを作成する機能があります。ただ、これで作成したSpriteは基本的に全く別のSpriteとして扱われるので、スクリプトから操作したい時に少し不便なことがあります。

そこで、スクリプトで複数枚のSpriteに変換する方法はないかなと思って調べてみたところ、Sprite.Createを使って作成する方法が簡単かなという感じでした。

使い方

Texture2D texture;
for(...) {
  var rect = new Rect(x, y, width, height);
  Sprite.Create(texture, rect, new Vector2(0.5f, 0.5f), 100.0f);
}

Rectで指定した範囲のSpriteが作られるので、この値を変えていきながら分割していくという形です。

実行時に毎回Sprite.Createを実行することになるのでパフォーマンス的には不利になると思いますが、実用上は問題ないかなと思います。

リンク

Unity – Scripting API: Sprite.Create
https://docs.unity3d.com/ScriptReference/Sprite.Create.html

Unity – Manual: Sprite Editor
https://docs.unity3d.com/Manual/SpriteEditor.html

UnityのUIでフォーカスを移したい場合はSetSelectedGameObject

UnityのUIを使っていて、フォーカスを変えたい場合はEventSystem.SetSelectedGameObjectを使ってみると良いみたいです。

使い方

EventSystem.current.SetSelectedGameObject(gameObject);

Canvasを2重に表示していて、後ろ側になっているCanvasのボタンにフォーカスがある場合など、一見不可解な現象が起こる場合もあるので、注意して使ってみてください。

リンク

Unity – Scripting API: EventSystems.EventSystem.SetSelectedGameObject
https://docs.unity3d.com/2018.2/Documentation/ScriptReference/EventSystems.EventSystem.SetSelectedGameObject.html