2017年7月21日
87ページの上のリストの1行目
誤:CreateOwnCoroutine
↓
正:CreateOwnDataCoroutine
136ページのSaveScreenShot.cs
本書のサンプルスクリプトはUnity 5.6.0f3にて動作確認を行っております。
その後リリースされたUnity 5.6.2f1環境では、スクリーンショットのキャプチャ時に画像が壊れる現象を確認しました。
本現象は、Cameraコンポーネントの「Allow HDR」チェックボックスを入れている場合、OnPostRender()が呼び出されるタイミング時点では描画が完成されていないことに起因します。
解決法は2通りです。
●カメラから「Allow HDR」のチェックを外す
ゲームがHDRレンダリングを行わない場合、これで問題が解決します。
●OnRenderImage()のタイミングでキャプチャ処理を行う
HDRレンダリングを行いつつキャプチャをする場合は、OnRenderImage()の処理タイミングでキャプチャ処理を行います。
その際、一度Graphics.Blitを呼ぶ必要があります。
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
Graphics.Blit(source, destination);
if (screenCaptureFlag)
{
Texture2D texture = new Texture2D(source.width, source.height, TextureFormat.ARGB32, false);
texture.ReadPixels(new Rect(0, 0, source.width, source.height), 0, 0);
texture.Apply();
SaveTexureToFileStore(texture);
screenCaptureFlag = false;
}
}
Part2のサンプルプログラムの補足情報
リスト2-1-1について(215ページ)
Startメソッドが省略されていますが、この部分は、後にあるリスト2-2-1のStartと同じ内容になります。そちらのメソッドの内容をそのままコピー&ペーストしてご利用ください。
=====
Moveメソッドが省略されていますが、それ以前のリストで掲載されていませんでした。これはカメラを追随して動かすもので、ネットワークとは特に関係はなく、本文には影響はありません。
本書で使ったサンプルでは、以下のようなコードになっていました。サンプルを作成される際には以下のように記述してください。
[ClientCallback]
void Move()
{
if (!isLocalPlayer) { return; }
Vector3 v = transform.position;
v.z -= 5;
v.y += 3;
Camera.main.transform.position = v;
}