2014年7月30日水曜日

新型Mac mini Mid-2014発売

Mac mini 2014アップルの公式サポートページにMac mini Mid-2014の表記が発見されました。
ページはすぐに修正されたそうですが新型のMac miniはとりあえず2014年内に発売されそうです。
来年以降ならCPU Bloadwel+メモリ DDR4などの搭載が期待できますが、現状ではMac mini 2012との性能差は僅かだと思われます。ac無線LANもまだ普及していませんし。

Unityで動的にオブジェクトを作成表示する

メインカメラに以下のスクリプトを登録して、
インスペクタからprefabに作成するオブジェクトを登録してください。

using UnityEngine;
using System.Collections;

public class NewObject : MonoBehaviour {
public GameObject prefab;
// Use this for initialization
void Start () {
for (int i = 0; i < 10; i++)
{
prefab.gameObject.name="object"+i;
Instantiate(prefab, new Vector3(0,10+3* i,0), Quaternion.identity);
}
}
void Update () {
if (Input.GetMouseButtonDown(0)) {

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit = new RaycastHit();

if (Physics.Raycast(ray, out hit)){
GameObject obj = hit.collider.gameObject;
Debug.Log(obj.name);
}
}

}
}

objectNが10個作成されて上から降って着ます。
タッチしたオブジェクトの名前がログに表示されます。

Unityでタッチしたオブジェクトをドラックで移動させるサンプルソース

UNITYアイコン地表のオブジェクトをタッチで移動させるサンプルソースです。

currentPosition.y = 1f;
の部分でオブジェクトのy位置(高さ)は固定しています。

using UnityEngine;
using System.Collections;

public class TouchMove: MonoBehaviour {

private Vector3 objectPosition;
private Vector3 mouseOffset;

void OnMouseDown() {
this.objectPosition = Camera.main.WorldToScreenPoint(transform.position);
this.mouseOffset= transform.position - Camera.main.ScreenToWorldPoint
(new Vector3(Input.mousePosition.x, Input.mousePosition.y, objectPosition.z));
}

void OnMouseDrag() {
Vector3 currentMousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, objectPosition.z);
Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentMousePosition) + this.mouseOffset;
currentPosition.y = 1f;
transform.position = currentPosition;
}
}

メインカメラのアングルはXを水平Zを垂直に見えるようにしてください。

2014年7月26日土曜日

Unityでできること

Unityでできることをまとめてみました。

・3Dモデル作成
球体や立方体を組み合わせることは可能。
※3Dモデル作成にはモデリング用アセットを追加するか専用ソフトを用意する必要がある。

・物理エンジン
3Dオブジェクトに当たり判定や重さなどを簡単に設定できます。

・アニメーション作成
動画編集やフラッシュ作成のオーサリングツール近いものが用意されています。

・地形作成
Terrain Engineが用意されています。お絵かき感覚で高低差をつけるなど、地面のテスクチャや植物のモデルを使用できます。

・広告
AdMobの広告はUnity用ライブラリが用意されています。インスペクタにパラメーターを入れるだけです。プログラミングの必要はありません。

・スコアランキング
Google Game ServiceのUnity用ライブラリが用意されています。
※マルチプレイヤーにはまだ対応していません。


2014年7月21日月曜日

Unityの必要PCスペック動作環境


動作環境イメージ

公式のUnityの動作環境説明がいまいちわかりにくいので低スペックPCで検証してみました。

/検証環境1
OS Windows Vista
CPU Core2 E4500 2.2G
メモリ DDR2 2G
オンボードグラフィック GM3100 286M

/検証環境2(ノートパソコン)
OS Windows Vista
CPU Core2 T7100 1.8G
メモリ DDR2 2G
グラフィックスカード GForce8400GT

上記二つの環境でも問題なく動作しました。
だだし、ゲームオブジェクトが増えると実行ボタン押下から動作するまでに時間がかかります。
プログラム実行中の操作も重くなります。

結論。低スペックPCだとグラフィカルなオブジェクトを多用できないが、プログラミングには問題ない。

Unity必須スペック(仮)
Core2 Duo世代以降のCPUとUMA
メモリ 2G

2014年7月18日金曜日

boot from cd no boot device available

PCを起動してみたところ
boot from cd no boot device available
hard disk bootable add-in cards
と表示されてOSが起動しませんでした。

Fキーを押してブートメニューを確認したところSATAが認識されていませんでした。
※稀に認識されてOSを起動しようとするがフリーズ
そろそろ壊れると思っていましたがハードディスクの故障です。
ハードディスクは劣化でOSやアプリの起動が年々遅くなっていきます。
去年から一部ファイルの転送が以上に遅かったり、CRCエラーで読み込みに失敗していました。
7年間使用していたので寿命です。

上記エラーはBIOSの設定が電池切れでリセットされても起こります。
SYSTEM_DATEが正しくない場合は電池切れかもしれません。
マザーボードの電池交換とBIOSの再設定で直ります。


2014年7月13日日曜日

液晶画面の白い線

液晶の不具合画像

液晶画面に線がはいってしまいました。特に衝撃を与えたわけではありません。
夏場になってから気温の変化が激しかったためにはんだ付けがはがれたのかもしれません。
幸いメーカーの一年保証が効くので無料で修理可能です。
ドット欠けやバックライトの不具合などの自然故障なら無償で修理をしてもらえます。
圧力による滲みなどの場合は有償修理になるかもしれません。

修理に送る際は余計な部品は外す必要があります。
液晶保護フィルムはセロテープではがしてアルミホイルに貼り付けて保管しました。

Unity アセットストアのダウンロード先を変更

Unityのアセットファイルのダウンロード先はC:\Users\「ユーザ名」\AppData\Roaming\Unity\Asset Storeがデフォルトになります。※OSによって異なる

問題なのがCドライブを圧迫すること。

システムパーチーションやSSDは容量が少ないので、何ギガも消費するアセットの保存先にはむいていません。しかし、Unityから保存先の指定ができないのでファイルシステムを利用するしかありません。

・解決策
C:..\AppData\Roaming\Unity\シンボリックリンクを作成する。

・手順
1.新しい保存先フォルダ「D:..Asset Store」を作成する
2.、古い保存先ホルダの中身を移動して、「c..Asset Store」フォルダは削除する
3.管理者権限でコマンドプロンプトを実行してシンボリックリンクを作成
以下、コマンドの例
mklink /d "C:\Users\ユーザ\AppData\Roaming\Unity\Asset Store" "D:\UnityData\Asset Store"

プロンプト表示
C:\Windows\system32>mklink /d "C:\Users\ユーザ\AppData\Roaming\Unity\Asset St
ore" "D:\UnityData\Asset Store"
symbolic link created for C:\Users\\AppData\Roaming\Unity\Asset Store <
<===>> D:\\Asset Store

以上でアセットの保存先が変更されます。


Unity failed to create 2D texture

7年前のvistaPCでUnityの環境構築をしてみました。

インストールはEXEを実行するだけなので簡単です。
Android用のAPKファイルをビルドするにも触ってればできてしまいます。
タッチイベントのテストは実機が必要です。unityリモートアプリを入れてつなげばOKです。

環境構築は楽勝かと思いきやアセットストアが表示されない

さっそくエラーが発生。
・以下コンソール
failed to create 2D texture
allocation 0x00000000 already registered @ C:/BuildAgent/work/d63dfc6385190b60/Runtime/GfxDevice/d3d11/TexturesD3D11.cpp:l466 size 6291456; now calling from C:/BuildAgent/work/d63dfc6385190b60/Runtime/GfxDevice/d3d11/TexturesD3D11.cpp:l466 size 3145728?

ダイレクトエックスの不具合だというのが見て取れますが、
ネットで検索をかけても解決方法が見つからない。
海外のQAを見る限りでは.Netフレームワークの更新だとか、DX11をインストールしなおすとかいろいろ出てきます。
自分は何となくUnityウインドウ上部DX11 on DX9をいう表示が気になって何を意味しているかを調べてみました。

解決策
グラボが対応しているDirect Xのバージョンで起動してみる。
以下起動パラメーター。
 -force-d3d9
 -force-d3d10
 -force-d3d11

とりあえずこれでアセットをダウンロードできます。
ブラウザからだと「Unityで開く」はなぜか使えません。
旧型GPUやVista環境だと苦労するかも?