プレビューのリンク先を変更する

custom post type によってプレビューの先を変更したいケースがある。
そういう場合は、preview_post_link をフックする。これには元のプレビュー先のurlが渡ってくるのでこれを好きに加工すれば良い。
デフォルトでは、以下のようにpost_typeとid、preview=trueというパラメータが入っている。

1
http://example.com/wordpress/?post_type=food&p=10&preview=true

1
2
3
4
5
6
7
add_filter( 'preview_post_link', function($link) {
global $post_type
if($post_type == 'food'){
//$link を適当に加工
}
return $link;
});

ここにタイトルを入力 を変更する

タイトルのプレースホルダーに「ここにタイトルを入力」とあるのを変更したい。
custom post type を使っていると、入力するのがタイトルじゃなかったり、プレースホルダーにもう少し説明を加えたいことがあるからだ。
function.php で enter_title_here をフックして、以下のように記述すればOK。

1
2
3
4
5
6
7
8
9
10
11
add_filter( 'enter_title_here', function($title){
global $post_type;
if($post_type == 'food'){
$title = '食べ物の名前を入力してください(例:ステーキ)';
}else if($post_type == 'dessert'){
$title = 'デザートの名前を入力してください(例:アイスクリーム)';
}else{
$title = 'タイトルを入力してください';
}
return $title;
});

sprite の multiple で 境界がおかしくなる

spriteの境目に線が入る

サンプル画像

上記画像をspriteで読み込んで32 x 32 で切り出してマップとして配置した。

サンプル画像

そうすると、境界線に青い線が入ってしまった。しかし、32 x 32 で切り出しがミスっているわけでもなく、描画して初めて発生する。

sprite の Filter Mode を設定

原因としては、Filter Mode というやつだ。
これがデフォルトだと Bilinear になっており、これは「テクスチャを近くでみたときにぼやける」設定らしい。
これを Point (テクスチャを近くでみたときにブロック状になる) に変更すればOK。参考

Filter Mode

Renderer の Materials を スクリプトから設定する

MeshRenderer などの Materials をスクリプトから動的に設定する。
普通にこうやればできるかなと思ったが、できず。

1
2
renderer.materials[0] = someMaterial1;
renderer.materials[1] = someMaterial2;

正解は以下。一度配列で取得して、配列としてセットし直すと動く。

1
2
3
4
Material[] mats = renderer.materials;
mats[0] = someMaterial1;
mats[1] = someMaterial2;
renderer.materials = mats;

2D画面に線を引く Line Renderer

Unity2D で 線を引きたかったので、Line Renderer を使ってみることにした。
「Add Component」 → 「Effects」→ 「Line Renderer」で追加できる。

Positions で 始点と終点の座標を指定し、Parameters で 色や太さを指定できる。
Unity4.5を使っているが、2DでEffectsを使うには Sorting Layer と Order In Layer をスクリプトから指定しないといけない。
例えば、以下のように指定する。

1
2
3
LineRenderer line = GetComponent<LineRenderer>();
line.renderer.sortingLayerName = "Effect";
line.renderer.sortingOrder = 1;

そして、Line Renderer の Materials を指定しなければいけない。
例えば、インスペクタビューからLine Rendererの Materials に Sprites-Defaultを指定する。
これで色もちゃんと反映されるし、描画もちゃんとされる。