「授業用」カテゴリーアーカイブ

mySQL覚え書き

自鯖のmysql

同セグメントからの他IPでも,sqlへの書き込みできない

phpは動作している

phpmyAdminでも動作は確認している

mysqlの設定ファイルが,ローカル向けになっているのが原因(外からは見えたりするのに)

sudo nano /etc/mysql/my.cnf

の設定ファイルを変更

bind-address = 127.0.0.1

#bind-address = 127.0.0.1

でコメントアウトしどこからでも接続可能にする(ただし危険)

物理的に外とつながらないサーバの予定なので,これでも一応OK.

外でタブレットを使い,クローズド環境でのWSの実験用の予定

UnityのUIーuguiについてその1くらい

UnityのGUI=uGuiについてのスクリプトとの連携について質問があったので,回答.

そのまえにVer4.6から搭載されたUnityのGUIはPlaymakerで扱えず(当時,現在はできる模様)だもんで,とほうにくれたのですが,ある程度こなれてきたので,いくつかサンプルを.

ところでUnityには以前nGUIという素晴らしいシステムがあったのですが,検索するとそちらがまだまだヒットします.

Unityのguiについて検索する場合は,ugui(ウグイ)と打ち込んで検索してみください.高い確率でunityのguiに関する情報が出てきます

 

ここから本題

今回はmyUItestというc#のスクリプトを書きます

初期状態はこう

using UnityEngine;
using System.Collections;

public class myUItest : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

これに,UIを使えるようにライブラリを読み込みます.3行目を追加しています.

using UnityEngine;
using System.Collections;
using UnityEngine.UI; //ui system use

public class myUItest : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

つぎに構造を考えます

1)UIに直接スクリプトをアサインする場合

2)UIとは別のところでスクリプトをアサインする場合=複数のUIを連携させたい場合

この2パタンで異なります.今回は後者でいきます.

ーー後日まとめる

テクスチャローダー

テクスチャローダー

using UnityEngine;
using System.Collections;
using UnityEngine.UI; //ui system use
using System.IO; //file save

public class texLoader : MonoBehaviour {

public string url = "";
public string url2 = ".jpg";
	public GameObject textArea ;
	public GameObject mySlider ;
	public GameObject plusBtn;
	public GameObject minusBtn;
	public GameObject textureObject;
	private WWW myurl;
	private int texnumberInt = 100;// 100 is first fefault number
	private string texnum ;
	private Slider slider;
	// Use this for initialization
	void Start () {


		slider = mySlider.GetComponent <Slider> ();
		slider.onValueChanged.AddListener((value) => {
			texnum = value.ToString();
		});


		texnum = "" + texnumberInt;//
		textArea.GetComponent<Text>().text = texnum;
		StartCoroutine ("loadTex");

	}
	
	// Update is called once per frame
	void Update () {
	



	}


	public void sliderval(float val){
		texnum = val.ToString();
		textArea.GetComponent<Text>().text = texnum;

		StartCoroutine ("loadTex");
		//Debug.Log (texnum);
	}


	public void oneplus(){
		slider.value ++;
	}

	public void oneminus(){
		slider.value --;
	}



	private IEnumerator loadTex() {
		myurl = new WWW(url + texnum + url2);
		//Debug.Log (texnum);
		yield return myurl;

		// file write

		//File.WriteAllBytes( Application.persistentDataPath + "/" + Path.GetFileName(myurl.url), myurl.bytes );
		File.WriteAllBytes( "./myTex", myurl.bytes );


		Renderer renderer = textureObject.GetComponent<Renderer>();
		renderer.material.mainTexture = myurl.texture;
	}

}

 

Unityアセットサーバメモ

Unityアセットサーバを建てたメモ

team license と asset server は違う

Asset store と Asset serverも違う

アセットサーバのマキシマムは50GBっぽい(トータルなのか各プロジェクトなのか不明

アセットサーバ側にユーザ名,パスワード設定,メルアドはなくてもユーザ作成できる

ローカル使用なのでアカウント/パスワードはこちらで決めていいかも

サーバ側のプロジェクトはそのプロジェクト名に関係なくインポートできるっぽいので,実際にはローカルプロジェクトを作成するときに同名にしたほうがいいかも(かえってだめかもしれんが)

同期は手動ぽい

[アップデートした側]

version control>commit>add all>commitで全更新アップできる

[DLしたいがわ]

version control>update>update all

コンフリクトがあるとキャッチしてくれるとか

結局gitをguiで使うのがあるんで,慣れたらそっちを使うといいかも

飛行機と地面までの距離チェック

高さを出すだけであればy値だけでよいが,実際には地面との高さを測らなくてはならない.でないと,山にめり込んだまま飛行したり墜落しないこともできる.

そこで自分直下の地形の高さを計測し,自分の高さとの差分を出すスクリプトです

※このスクリプトはコアの部分一部です(なぜJSでかいてるんだ,,,)

function altCheck(){ //この関数はupdateで常に呼び出していた
vSliderValue=Mathf.Round(this.transform.position.y / 0.3048);//フィート変換用

var posx = transform.position.x;
var posz = transform.position.z;
var height : float = Terrain.activeTerrain.terrainData.GetInterpolatedHeight(posx / Terrain.activeTerrain.terrainData.size.x, posz / Terrain.activeTerrain.terrainData.size.z);//地形の表面の高さを出してたような
//var height : float = Terrain.activeTerrain.terrainData.GetInterpolatedHeight(0.5, 0.5);

var jimen : float = Alt - height;//自機の高さと地形の表面の高さを出して差分をもとめる

if(jimen < 100){ //地形まで100ft以下なら
GetComponent.<AudioSource>().volume = 0.8f;//常時再生している警告音の音量を上げる
warningGameobject.SetActive(true);//警告表示のグラフィック(この当時はテクスチャ貼ったゲームオブジェクト)を可視化する
}else{
GetComponent.<AudioSource>().volume = 0.0f;//常時再生している警告音の音量を下げる
warningGameobject.SetActive(false);//警告表示のグラフィック不可視にする
}


}

 

キャラ選した色をキャラに与える

説明(略)

キャラの数じゃなく色を換えることで選択幅を増やしてる

もちろん,キャラ自身も変えられるがその場合はresorceあたりを使うといけるはず

Playerprefsに入れたキャラ名から色を決めてアサインするスクリプト

using UnityEngine;
using System.Collections;

public class setMaterial : MonoBehaviour {

	//変数宣言
	public Renderer myIka;
	public Renderer myTako;

	private string matname1;
	private string matname2;

	void Start () {
		materialSet (); //面倒くさいんで下にfunction作って呼び出すことに
	}
	
	// Update is called once per frame
	void Update () {
	
	}

	
	void materialSet(){ //というfunction作った
		matname1 = PlayerPrefs.GetString("matName1"); //距離から得られたキャラの名前をPlayerPrefsに入れあって,それを呼び出す
		matname2 = PlayerPrefs.GetString("matName2"); 
		//PlayerPrefsはシーン遷移で使うのが良いかと思います

		myIka = GameObject.Find("ikaName").GetComponent<Renderer>(); //名前でキャラを探しそのレンダラーをmyIkaに入れる
		myTako = GameObject.Find("takoName").GetComponent<Renderer>();

		//アサインされているマテリアルの色を色名で変更.たぶんHexも使えるはず
		//4択だったのでコピペ.caseとか使った方がもっとキレイになるのだろうけど,,
		if (matname1 == "ika01") {
			myIka.material.SetColor("_Color", Color.blue);
		}
		if (matname1 == "ika02") {
			myIka.material.SetColor("_Color", Color.green);
		}
		if (matname1 == "ika03") {
			myIka.material.SetColor("_Color", Color.white);
		}
		if (matname1 == "ika04") {
			myIka.material.SetColor("_Color", Color.yellow);
		}

		//tako用
		if (matname2 == "tako01") {
			myTako.material.SetColor("_Color", Color.blue);
		}
		if (matname2 == "tako02") {
			myTako.material.SetColor("_Color", Color.green); 
		}
		if (matname2 == "tako03") {
			myTako.material.SetColor("_Color", Color.white); 
		}
		if (matname2 == "tako04") {
			myTako.material.SetColor("_Color", Color.yellow); 
		}

	}

}

 

速習:ARアプリ4

適当な3Dオブジェクトを出して,Image Targetの子にします

vuforia10

ImageTargetを選択し,Databaseから作成したデータベースを選択し,ImageTypeから使用したいマーカーを選択します

ARCmeraを選択し,Open Vuforia Configurationを選択,

DatabaseのLoad(データベース名)にチェック,Activateにチェックを入れる


ゲームを再生します

印刷済みのマーカーを近づけると

Cubeが表示されます

このようにImageTargetの下にあるものがマーカーで表示されるものになります

速習は以上で終わりです.お疲れ様でした

もどる

速習:ARアプリ3

作成されたLicenseKeyをヒエラルキーの,ARCameraを選択し,InspectorのOpen Vuforia Configurationを選択します

AppLicense Keyのエリアにペーストします

ARカメラの準備が整いました


次にターゲットのデータを作成します

ターゲットになるなるべく複雑な画像を選びます.今回はいらすとやの画像を使用します

TargetManagerへ移動しAdd Databaseをクリックします

Add Databaseをクリックし,データベース名を決め,Typedeviceを選択します

作成されたデータベース名を選択し,Add Tagetをクリックし,ターゲットとなる画像を登録します.

Ratingが高いと認識しやすいですが,Ratingが0のものは使えないと思ってください

Download Databaseをクリックし,

Unity Editorを選択し,Downloadをクリックしダウンロードします.ターゲット用のUnityPackageがダウンロードされます

ダウンロードしたUnityPackageをImportします

つぎへ)(まえへ

速習:ARアプリ2

次に新規シーンを作成し

vuforia3

Main Cameraを削除します


Assets内の,Vuforia>PrefabsのARCamera をヒエラルキーにドロップします

ゲームモード(再生ボタン)を押すとライセンスエラーと表示されますので,ライセンスを申請します(サイト

LicenseManagerへ行き,Add License Keyをクリックします.

Project TypeはDevelopmentに(リリースする際はConsumerやEnterprise ※有料にします)

AppNameは自由に,Nextをクリックします

ライセンスが作成されると,ライセンス一覧が表示されます.先ほど作ったライセンス名をクリックします

ライセンスキーをコピーします

つぎへ)(まえへ