Beauty Salon α-BET (alphabet)

space001
Blender3d Collada dae modeling Use Papervision3d on Progression3 and 4 http://a-bet.secret.jp/#/access
more whaison works.
whaison space
space002
http://whaison.jugem.jp/ https://jp.pinterest.com/whaison/ https://www.instagram.com/whaison/ https://whaison.amebaownd.com/
https://suzuri.jp/whaison
http://whaison.blogspot.com/
http://whaison.tumblr.com/ http://qiita.com/users/whaison http://www.behance.net/whaison https://github.com/whaison/ https://bitbucket.org/whaison http://serato.com/user/whaison http://whaison.hatenablog.jp/

typo memo
http://d.hatena.ne.jp/whaison/


dayNote
http://www.myspace.com/whaison http://ameblo.jp/whaison/ http://blog.crooz.jp/whaison/ http://blog.crooz.jp/whaisoncafe/ http://nenpyo.org/whaison

fulldisk
http://full.shin-gen.jp/
http://whaison.client.jp/
http://www.dclog.jp/whaison/
featured forums.
space004
forum.unity3d.com/

forums.unrealengine.com.

Progression Forum.

FlashDevelop Forum.

Papervision3D Forum.

FlexUserGroup Forum.

SparkProjectForum.





Twitter







Mobile
qrcode
Calendar
SunMonTueWedThuFriSat
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< November 2014 >>
New Entries
Archives
Categories
Recent comment
  • FlashDevelopでフォント埋め込み
    感謝!! (12/24)
  • cocos2d-x-3.0rc0 ,c++ ,cpp でTexturePacker で 吐き出した、plist と png でパラパラアニメーションのコード例
    whaison (04/17)
  • Blender2.67にbvh(web上に2500個以上ころがってる)入れてそのBoneオブジェクトをUnity4.0のmecanimで使う
    whaison (08/19)
  • Apple Dev Center 「Certificates, Identifiers & Profiles」で Adhoc をつくってXCode4.6.1でArchiveしてipaを書き出し
    whaison (04/30)
  • Flash CS6でプロパティーパネルで物理演算のジャンプの高さを設定できるCitrus Engine
    whaison (03/01)
  • 「Flash以外、例えばKinectとか」ON TOKYO (会場:高田馬場4-11-8 Floor 6階 ) 短縮URL http://bit.ly/dI0Bfx
    uka (03/02)
  • App Store Review Guidelines アップル社のアプリ審査基準ガイドライン和訳 Apple が 開発者を悩ませ ユーザーをハッピーにしたいガイドライン。w
    whaison (01/25)
  • Unity3d では ADOBE JAPAN OSAKIで行われたFITC 2010 TOKYOでは、 「iOS用にパブリッシュするためには、フリー版ではなくて、有料版を買ってください。さらに追加のパッケージである、"iOS Package (for Development)"を買ってください」とのことだった。
    whaison (01/25)
  • enjoy Adidas-Futsal-Park
    whaison (01/16)
  • MacBookAir にFlashPlayer入れたらなった。Mac Flash Player 10.1/10.2でUstream などでカメラが認識されないバグそんなときはUstreamProducer!でもなくiPhoneだと直ぐにライブ配信できた
    whaison (01/14)
simple sintax high lighter2.0
space003
SyntaxHighlighter2.0用 の貼り付けコード作成する!
ブログパーツ-BLOG PARTS.
Profile
Links
Recommend
Sponsored Links
Admin
無料ブログ作成サービス JUGEM
Seach this site
            
2022.03.28 Monday
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - | pookmark |
            
2014.11.28 Friday
Unity C# でPHPから受け取ったDateTimeオブジェクトの9999-12-31 23:59:59をC# DateTimeオブジェクトに変換したよん。
Unity C# でPHPから受け取ったDateオブジェクトの9999-12-31 23:59:59をC# DateTimeオブジェクトに変換する

using System;
using UnityEngine;
        public class Script : MonoBehaviour
        {
          
private GameObject endDayTextObj;
          void Start ()
                {
          endDayTextObj
 = gameObject.transform.FindChild ("EndDayText").gameObject as GameObject;

          /////////////////////////////////////////////////////////////////////
                DateTime dateTime = phpDayToCsDateObject (phpitem.end_date);
                ////
                /// ちなみにC#
                
                ////DateTime.Now.DayOfWeek.ToString("d")
                ////    で曜日を0,1,2,3・・・という数字で返してくれ、
                /////        (ちなみに日曜日から0・・土曜日7です)
                string youbi = ("日月火水木金土").Substring(int.Parse(dateTime.DayOfWeek.ToString("d")),1);
                endDayTextObj.GetComponent<Text> ().text = 
dateTime.ToString("%M")+"/"+dateTime.ToString("%d")+"("+youbi+")まで";
                        }
                }

                DateTime 
phpDayToCsDateObject (string date_str="9999-12-31 23:59:59")
                {
                        string output_str = "";        
                        Debug.Log ("--------phpDayToCsDateObject-------date_str=" + date_str);
                        //string[] stArrayData = stCsvData.Split(',');
                        string[] strArrBace = date_str.Split (' ');

                        Debug.Log ("--------phpDayToCsDateObject-------strArr00[0]=" + strArrBace [0] + " strArr00[1]=" + strArrBace [1]);
                        string[] strArrYYYYMMDD = strArrBace [0].Split ('-');
                        Debug.Log ("--------phpDayToCsDateObject-------strArrYYYYMMDD[0]=" + strArrYYYYMMDD [0] + " strArrYYYYMMDD[1]=" + strArrYYYYMMDD [1] + " strArrYYYYMMDD[2]=" + strArrYYYYMMDD [2]);
                        int YEAR = int.Parse (strArrYYYYMMDD [0]);
                        int MONTH = int.Parse (strArrYYYYMMDD [1]);
                        int DAY = int.Parse (strArrYYYYMMDD [2]);


                        string[] strArrTimeHHMMSS = strArrBace [1].Split (':');
                        Debug.Log ("--------phpDayToCsDateObject-------strArrTimeHHMMSS[0]=" + strArrTimeHHMMSS [0] + " strArrTimeHHMMSS[1]=" + strArrTimeHHMMSS [1] + " strArrTimeHHMMSS[2]=" + strArrTimeHHMMSS [2]);
                        int HOUR = int.Parse (strArrTimeHHMMSS [0]);
                        int MINIT = int.Parse (strArrTimeHHMMSS [1]);
                        int SECONDS = int.Parse (strArrTimeHHMMSS [2]);


                        output_str = date_str;
                        //2002/05/12 20:30:15
                        //DateTime dateTime = new DateTime(2002512203015123);
                        DateTime dateTime = new DateTime (YEARMONTHDAYHOURMINITSECONDS);

                        return dateTime;
                }
}

出力:12/31(金)まで


参考サイト
DateTimeのつくりかた
http://dobon.net/vb/dotnet/string/datetimeformat.html
DateTimeからの文字列の出力方法
http://note.phyllo.net/?eid=1106260#2013021900
DateTimeから曜日の出力方法
http://toraratora.blog8.fc2.com/blog-entry-22.html#more

 
| whaison | Unity3d | 18:47 | comments(0) | - | pookmark |
            
2014.11.27 Thursday
Unity4.6正式版 UI(uGUI) GridLayoutGroup と Pager と RectTransform
Unity4.6正式版 UI(uGUI) GridLayoutGroup と Pager と RectTransform



今回使った限りで

UI を prefab から instanciate して使う場合

アンカーポイントを左上に設定しないと困る。



RectTransform インスペクタにある PosX PosY という値は scriptからはアクセスできなかった。

関連:So @Ankit Priyarup Left=position.x Right=sizeDelta.x PosY=position.y PosZ=position.z Height=sizeDelta.y

RectTransformには position というプロパティと(設定したアンカーに関係ないのでつかえない)

RectTransform には anchoredPosition .y みたいな(設定したアンカーに関係もとづくので使いやすい)





この値を取る必要があった

さらに

RectTransform RootRectTransform =

gameObject.transform.FindChild ("Root").transform
as RectTransform; 

でもキャストできてしまうが値は取れない。0になる

RectTransform RootRectTransform =

gameObject.transform.FindChild ("Root").transform.GetComponent<RectTransform> () as RectTransform;


のようにするとやっとanchoredPosition.yに値がはいってくる。



GridLayoutGroupはすごく便利な機能だが、今回のスクロールバーにページャーをつける作りだと



無駄な機能になってしまう。



あたりまえだが自分でページ区分を管理する必要があるし

build_6_SetCount = build_6_SetCount + 1;

if (build_6_SetCount > 6) {

pageNum = pageNum + 1;

}




ページのボタンを押したらページの先頭の座標に移動する必要がある

その座標計算は自分でして置かなければならない









UI (uGUI)でpager

ページャーボタン自体を適当においていってくれるので

GridLayoutGroupで管理するのはとっても楽なことだった。









今回のソース

http://www.mediafire.com/download/c2sua3fy64cldru/uGUIGridRayoutPager001_2.zip
| whaison | Unity3d | 17:51 | comments(0) | - | pookmark |
            
2014.11.21 Friday
Unity 4.6RC2 で UI (uGUI) Image にC# で WWW クラスで webから画像を貼付ける方法。
Unity 4.6RC2 で UI (uGUI) Image にWWW から画像を貼付ける方法。
注意ちなみにjpg,png,はロードできるがgifはだめ ふるいのきらいみたい

UI(uGUI)だと
Imageコンポーネントのspriteプロパティにぶち込むよ。
ロードを待つ必要があるからIEnumerator 型の関数でStartCoroutine 使って呼ぶよ
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class Script : MonoBehaviour
{
        private GameObject imageObj;

        void Start(){
               
imageObj = gameObject.transform.FindChild ("Image").gameObject as GameObject;
               StartCoroutine(ImageWWWStart());
                
        }
        IEnumerator
 ImageWWWStart ()
        {
                        string url = "";
                        url = "http://images.earthcam.com/ec_metros/ourcams/fridays.jpg";
                        www = new WWW (url);
                        yield return www;
                        //cubeObj.renderer.material.mainTexture=www.texture;
                        imageObj.GetComponent<Image> ().sprite = Sprite.Create (www.texturenew Rect (00320240), Vector2.zero);//OK

         }
}





参考
Texture2DからSpriteを作成する
http://noshipu.hateblo.jp/entry/2014/10/22/015832


Unity ScriptReference Sprite.Create(Texture2D,Rect,Vector2,float)
docs-jp.unity3d.com/Documentation/ScriptReference/Sprite.Create.html


WWWクラスを利用して動的にファイルを読み込む neareal.net/index.php?ComputerGraphics%2FUnity%2FTips%2FScript%2FLoadFileByUsingWWW

Unity Document WWW
http://docs.unity3d.com/ScriptReference/WWW.html

UnityでPNGファイルを動的に読み込む方法    
macomu.sakura.ne.jp/blog/?p=55

---------------------------------------------------------------------------------------------------------------
ちなみにローカルファイルは こうだった。

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using System.IO;//System.IO.FileInfoSystem.IO.StreamReaderSystem.IO.StreamWriter

public class Script : MonoBehaviour
{
 
private GameObject imageObj;     
  void Start(){
     imageObj
 = gameObject.transform.FindChild ("Image").gameObject as GameObject;
      

     Texture2D byteTexture=(Texture2DReadTexture("/Users/otsuka-noboru/Downloads/fridays.jpg"320240);
     imageObj.GetComponent<Image> ().sprite = Sprite.Create(byteTexturenew Rect(0,0,320,240), Vector2.zero);

  }
//---------------------------UnityでPNGファイルを動的に読み込む方macomu.sakura.ne.jp/blog/?p=55
  byte[] ReadPngFile (string path)
  {
      FileStream fileStream = new FileStream (pathFileMode.OpenFileAccess.Read);
      BinaryReader bin = new BinaryReader (fileStream);
      byte[] values = bin.ReadBytes ((int)bin.BaseStream.Length);
            
      bin.Close ();
            
     return values;
   }
        
   Texture ReadTexture (string pathint widthint height)
   {
      byte[] readBinary = ReadPngFile (path);
            
      Texture2D texture = new Texture2D (widthheight);
      texture.LoadImage (readBinary);
            
      return texture;
   }
   //---------------------------
UnityでPNGファイルを動的に読み込む方macomu.sakura.ne.jp/blog/?p=55
}
 
| whaison | Unity3d | 17:45 | comments(0) | - | pookmark |
            
2014.11.20 Thursday
unity official C#DELEGATES のほうが簡単だった。delegate は関数をマルチ(複数)に呼び出せる。関数内容の置き換えもできる。

やっとこさ理解した。
unity official C#DELEGATES のほうが簡単だった。delegate は関数をマルチ(複数)に呼び出せる。関数内容の置き換えもできる。

unity official

DELEGATES

http://unity3d.com/learn/tutorials/modules/intermediate/scripting/delegates

How to create
and use
delegates to provide complex (delegate は提供するは複数に。)
and
dynamic functionality in your scripts.(ダイナミックなスクリプトで)
DelegateScript 関数の置き換えの例
using UnityEngine;
using System.Collections;
public class DelegateScript : MonoBehaviour {
delegate void MyDelegate(int num);//戻り値なし 引数int型のnum
MyDelegate myDelegate;
void Start () {
myDelegate = PrintNum;
myDelegate(50);
myDelegate = DoubleNum;
myDelegate(50);
}
void PrintNum(int num)
{
print ("Print Num: " + num);
}

void DoubleNum(int num)
{
print ("Double Num: " + num * 2);
}
}
----------------
output:
Print Num: 50
Double Num: 100
----------------

MulticastScript  関数をマルチ(複数)に呼び出せる例
using UnityEngine;
using System.Collections;
public class MulticastScript : MonoBehaviour
{
delegate void MultiDelegate();//戻り値もなし、引数もなしのデリゲート
MultiDelegate myMultiDelegate;
void Start () {
myMultiDelegate += PowerUp;
myMultiDelegate += TurnRed;
if(myMultiDelegate != null) {
myMultiDelegate();
}
}
void PowerUp()
{
print ("Orb is powering up!");
}
void TurnRed()
{
renderer.material.color = Color.red;
}
}
----------------
output:
Orb is powering up!
renderer.material.color = Color.red; になる。
----------------

delegate int mygate(string str);
デリゲートの図
入力引数型

中身なし関数いれるハコ

出力返り値型
int func(string str1);
{
Debag.Log(str1);
return 1;
}
中身なし関数いれるハコにfuncいれる
mygate+=func("デリゲート");
mygate+=func("デリゲート");
mygate();

----------------
output:
デリゲート
デリゲート
----------------

 
| whaison | Unity3d | 11:47 | comments(0) | - | pookmark |
            
2014.11.20 Thursday
delegateは戻り値と引数の型 指定 つまり入力と出力の型だけを定義したものデリゲート
delegateとは戻り値と引数の型 指定
入力と出力の型だけを定義したデリゲート

C#では、次の宣言文によって「string型の引数と、int型の戻り値を持つデリゲート」を宣言する。
まずこれ
delegate int SomeDelegate(string p);

そして、次のようにデリゲート型オブジェクトを生成することができる。

なんとデリゲートの引数として指定したstringでなく関数を渡して
インスタンス化する。
そう入力と出力を定義したデリゲートには
必要なのは入力をどのように処理して出力するかという関数内容だからだ

SomeDelegate del = new SomeDelegate(SomeMethod);
int SomeMethod(string p) {
return 1;
});

SomeDelegate del = new SomeDelegate(delegate(string p) {
return 1;
});
前者の宣言では既存のSomeMethodメソッドをデリゲートの中身として指定しており、後者の宣言ではデリゲートの中身も同時に定義している(この書き方では、return文によって返される値がSomeDelegateデリゲートの戻り値に暗黙的に変換できない場合、エラーとなる)。

こうして生成したデリゲート型オブジェクトは、通常のメソッドのように直接実行することができる。

int ret = del("some string");


しかし、デリゲートの真価が発揮されるのはイベントと併用した時である。イベントは、次のように宣言する。
まずこれ
delegate int SomeDelegate(string p);
event SomeDelegate SomeEvent;
こうして宣言したイベントには、+= 演算子と -= 演算子によって、デリゲート(イベントハンドラ)を追加したり削除したりすることができる。

SomeEvent += new SomeDelegate(SomeEventHandler1);
SomeEvent -= new SomeDelegate(SomeEventHandler1);
イベントハンドラの追加が += 演算子によって行われることから推測できるように、1つのイベントには複数のイベントハンドラを登録することができる。

次のようにしてイベントを起こすと、登録したイベントハンドラがまとめて実行される。

if (SomeEvent != null)
SomeEvent("some string");

てゆーか
実際はイベントハンドラ自体が
デリゲートを必要としていて

サンプルはこうなる

 まず、初めてのイベントとして、できるだけ小さく書いたサンプル・プログラムを見てみよう

using System;

namespace ConsoleApplication53
{
戻り値のなしの引数object型のsender, EventArgs型の eデリゲート
public delegate void SampleEventHandler(object sender, EventArgs e);
class Class1
{
public event SampleEventHandler sampleEvent;
public void handler( object o, EventArgs e )
{
Console.WriteLine("handler called");
}
static void Main(string[] args)
{
Class1 target = new Class1();
target.sampleEvent += new SampleEventHandler(target.handler);
target.sampleEvent( target, EventArgs.Empty );
}
}
}
イベントを使用した小さなサンプル・プログラム1
このプログラムには注目すべき点が5つある。
 これを実行すると以下のようになる。
出力:handler called

サンプル・プログラム1の実行結果
最終的には、イベントのハンドラであるhandlerメソッドが呼び出され、メッセージが表示される。

参考
http://ja.m.wikipedia.org/wiki/デリゲート_(プログラミング)


http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_013/csharp_abc01.html










delegate int mygate(string str)
デリゲートの図
入力引数型

中身なし関数いれるハコ

出力返り値型
int func(string str1)
{
Debag.Log(str1)
}
中身なし関数いれるハコにfuncいれる
mygate+=func("デリゲート")

| whaison | Unity3d | 00:20 | comments(0) | - | pookmark |
            
2014.11.19 Wednesday
phpMyAdminを使用していると、データベース名がアンダースコア起点で勝手にグループ化されて少々鬱陶しいので何とかしてみる。

phpMyAdminを使用していると、データベース名がアンダースコア起点で
勝手にグループ化されて少々鬱陶しいので何とかしてみる。

http://qiita.com/attakei/items/3b1eee8fdd06f7452a6c

          normalattakeiさんの
 
www/tools/phpMyAdmin/libraries/List_Database.class.php(256-)
            foreach ($separators as $separator) {
                // use strpos instead of strrpos; it seems more common to
                // have the db name, the separator, then the rest which
                // might contain a separator
                // like dbname_the_rest
                $pos = strpos($db, $separator, 1);

                if ($pos !== false) {
                    break;
                }
            }

ここで、グルーピングのためのセパレータをチェックしているので、この部分をまるごと消すなりコメントアウトすればOKっぽい。そのままやったけどそんなソースなかった
だめだった

バージョンが違ったためだと思う
www/tools/phpMyAdmin/libraries/navigation/NavigationTree.class.php 541行目

/*
                    foreach ($separators as $separator) {
                        $sep_pos = strpos($child->name, $separator);
                        if ($sep_pos != false
                            && $sep_pos != strlen($child->name)
                            && $sep_pos != 0
                            && ($prefix_pos == false || $sep_pos < $prefix_pos)
                        ) {
                            $prefix_pos = $sep_pos;
                        }
                    }
                    */


とりゃ

できた!

| whaison | PHP | 10:20 | comments(0) | - | pookmark |
            
2014.11.18 Tuesday
php Laravelフレームワークごにょごにょやるうえで勉強したことをつらつらと001
php Laravelフレームワークごにょごにょやるうえでしらべたことをつらつらと

ーーーーーーーーhttp://www.ospn.jp/press/20140605no40-useit-oss.htmlーーーーーーーーーーーーーー
6.モデルについて
モデルには
1、エロクアント(Eloquent)、
2、クエリービルダーと
3、ベーシックなクエリーの
3種類あって

ベーシックなクエリーは下記の様な発行方法です。

■SELECT
DB::select('select * from users where id = ?', array(1));

■INSERT
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));

■UPDATE
DB::update('update users set votes = 100 where name = ?', array('John'));

■DELETE
DB::delete('delete from users');

いずれもプリペアドステートメントを使用して
各クエリーを発行する形式になっています。
プリペアドステートメントとは? 実行したい SQL をコンパイルした 一種のテンプレートのようなものです。
解析/コンパイル/最適化 の繰り返しを避けるので高速に動作するということです。
(http://php.net/manual/ja/pdo.prepared-statements.php)

クエリービルダーでは以下の様になります。

■SELECT
DB::table('users')->where('id', 1)->first();

■INSERT
DB::table('users')->insertGetId(['id' => 1, 'name' => 'Dayle']);

■UPDATE
DB::table('users')->where('name' => 'John')->update(['votes' => 100]);

■DELETE
DB::table('users')->where('name' => 'John')->delete();

複数の検索条件が必要な場合はwhereを複数記述することで、
内部でANDへと変換されます。

エロクアントは、より洗練されたORMを提供します。

 ■SELECT
User::all();
User::find(1);

 ■INSERT
$user = User::create(array('name' => 'John'));

 ■UPDATE
$user = User::find(1);
$user->email = 'john@foo.com';
$user->save();

■DELETE
$user = User::find(1);
$user->delete();

エロクアントの場合は、デフォルトでは
クラス名を小文字の複数形にしたものが、テーブル名として使用されます。
初期状態の場合はapp/modelsにUserクラスが設置されています。
複数形ではない別のテーブルを使用する場合は、

protected $table = 'table_name';

と定義し
同様にfindで使われるものはprimaryKeyとなりますので、

protected $primaryKey = "table_id";

と定義します。
検索条件の追加等はクエリービルダーを組み合わせて実装していきます。

エロクアント、クエリービルダー、ベーシックの3種とも、
データベースのマスター、スレーブ、複数のデータベースを使用する場合等は、

// ベーシック
DB::connection('master')->select($sql, $params);

// クエリービルダー
DB::connection('master')->table('table')->get();

// エロクアント
User::on('slave)->find(1);

等の様に接続先を変更します。
これらの接続先は、app/config/database.php内のconnections配列のキーを
指定することで変更可能です。
デフォルトはsqlite, mysql, pgsql(PostgreSQL), sqlsrv(SQL Server)になっていますので、
masterやslaveなどへ変更して、接続先を指定してください。


ーーーーーーーーhttp://www.ospn.jp/press/20140605no40-useit-oss.htmlーーーーーーーーーーーーーー

DB::connection(切り替えるテーブルの変数名)->beginTransaction();

トランザクションという処理の詰め合わせのようなものをはじめて
DB::connection(切り替えるテーブルの変数名)->commit();
でデータベースに反映する

$a = App::make('MyManager')->getConnection();
Laravel はApp::makeでクラス名を指定すれば、それをnewと同様にインスタンス化してくれます。
http://kore1server.com/186
<?php
// key comes from app/config/app.php.
// this will output a big long random string
echo Config::get('app.key');

// timezone comes from app/config/local/app.php
// this will output "America/Los_Angeles"
echo Config::get('app.timezone');
?>
http://laravel-recipes.com/recipes/27/environment-specific-configurations


——————————http://laravel4.kore1server.com/docs/database-----------

ちなみにPlayerCardManager.phpの
$con = App::make('PlayerManager')->getPlayerConnection($playerId);
PlayerManager.phpのPlayerManagerクラスのインスタンスの
関数getPlayerConnectionに引数(playerId=19800422など)を渡して

DB::connection($con)->beginTransaction();は

場合により、自分でトランザクションを始める必要があることもあるでしょう。

DB::beginTransaction();
トランザクションをロールバックするには、rollbackメソッドを使用します。

DB::rollback();
最後に、トランザクションのコミットは、commitメソッドです。

DB::commit();


トランザクションとは    http://gihyo.jp/dev/serial/01/db-academy/000201 より
データベースは,トランザクションという単位で「ユーザが実行した一連のながながとした処理」を管理します。


コネクションとの接続
複数のコネクションを使用するときはDB::connectionメソッドが使用できます。
$users = DB::connection('foo')->select(...);




———————http://laravel4.kore1server.com/docs/database--------------------

 
| whaison | php Laravel | 19:00 | comments(0) | - | pookmark |
            
2014.11.12 Wednesday
Unity 4.6 RC1 Latest fully tested release で UI(uGUI) でのWeb player Buildについての件
Unity 4.6 RC1 Latest fully tested release で UI(uGUI) でのWeb player Buildについての件

Unity4.6.20のWeb player Build ではUI(uGUI) が表示されなかったが

Unity 4.6 RC1では表示できるようになった。

これをしようとして気づいた。
 

WebページからUnity Web Player内の関数を呼び出す

http://docs-jp.unity3d.com/Documentation/Manual/Unity%20Web%20Player%20and%20browser%20communication.html
<script type="text/javascript" language="javascript">
<!--
//Web Playerの初期化
var u = new UnityObject2();
u.initPlugin(jQuery("#unityPlayer")[0], "Example.unity3d");

function SaySomethingToUnity()
{
	u.getUnity().SendMessage("Canvas", "MyFunction", "Hello from a web page!");
}
-->
</script>

Canvas

MyFunctionScript.csを貼付けた。

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class MyFunctionScript : MonoBehaviour {

    // Use this for initialization
    void Start () {
        MyFunction("MyFunctionScript-Start");
    }
    
    // Update is called once per frame
    void Update () {
    
    }
    public void MyFunction(string param)
    {
        Debug.Log("MyFunction(param="+param+")");
        Debug.Log ("gameObject=" + gameObject);
        Debug.Log ("gameObject.transform=" + gameObject.transform);
        Debug.Log ("gameObject.transform.Find ('Text')="+gameObject.transform.Find ("Text"));
        Debug.Log("transform="+transform);
        Debug.Log ("transform.Find ('Text')="+transform.Find ("Text"));
        //GameObject cube = transform.Find ("Cube").gameObject as GameObject;
        //GameObject canvas = transform.parent.gameObject.transform.Find ("Canvas").gameObject as GameObject;
        //GameObject text = transform.Find ("Text").gameObject as GameObject;
        GameObject text = transform.Find("Text").gameObject as GameObject;
        text.GetComponent<Text> ().text = "MyFunction(param=" + param + ")";
        //GameObject textcanvas.transform.FindChild ("Text").gameObject as GameObject;
        //text.GetComponent<Text>().text = "MyFunction(param=" + param + ")";
    }
    
    /// <summary>
    /// デバック用画面名の表示.
    /// </summary>
    void OnGUI()
    {
        
        if (GUI.Button (new Rect (208038050), "OnGUIButton")) {
            MyFunction("OnGUI to MyFunction");
                        //this.SendMessage ("PushPointPurchase", trueSendMessageOptions.DontRequireReceiver);
                }
    }

}


テスト
http://www.mediafire.com/download/7nmwiq4jaqc9bwd/ExternalCallAndSendMessage001.zip
| whaison | Unity3d | 19:56 | comments(0) | - | pookmark |
            
2014.11.12 Wednesday
unity C# iDictionary とDictionary の違い とICollectionインターフェース
mscorlib.dll
FileVersion
 ("2.0.50727.1433")]



unity C#というか C#
iDictionary とDictionary の違い

IDictionaryはプロパティ+メソッド全部で8こしかない。
IsFixedSize
IsReadOnly
ICollection
 Keys
TValue this [TKey key]
Add
 (TKey keyTValue value)
ContainsKey
 (TKey key)
Remove
 (TKey key)
TryGetValue
 (TKey keyout TValue value)


http://msdn.microsoft.com/ja-jp/library/s4ys34ea(v=vs.110).aspx
ーーーーーーーーーーーーーーーーーーーーIDictionary Classーーーーーーーーーーーーーーーーーーーーーー
using System;
using System.Runtime.InteropServices;
namespace System.Collections
{
    [ComVisible (true)]
    public interface IDictionary : ICollectionIEnumerable
    {
        //
        // Properties
        //
        bool IsFixedSize
        {
            get;
        }

        bool IsReadOnly
        {
            get;
        }

        ICollection Keys
        {
            get;
        }

        ICollection Values
        {
            get;
        }

        //
        // Indexer
        //
        object this [object key]
        {
            get;
            set;
        }

        //
        // Methods
        //
        void Add (object keyobject value);

        void Clear ();

        bool Contains (object key);

        IDictionaryEnumerator GetEnumerator ();

        void Remove (object key);
    }
}

ーーーーーーーーーーーーーーーーーーーーIDictionaryーーーーーーーーーーーーーーーーーーーーーーー
IDictionary
と短いがDictionaryは長ーーーーーい
http://msdn.microsoft.com/ja-jp/library/xfhwa508(v=vs.110).aspx
ーーーーーーーーーーーーーーーーーーーーDictionaryーーーーーーーーーーーーーーーーーーーーーーー
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Security.Permissions;
namespace System.Collections.Generic
{
    [DebuggerDisplay ("Count={Count}"), DebuggerTypeProxy (typeof(CollectionDebuggerView<, >)), ComVisible (false)]
    [Serializable]
    public class Dictionary<TKeyTValue> : IDictionary<TKeyTValue>, ICollection<KeyValuePair<TKeyTValue>>, IEnumerable<KeyValuePair<TKeyTValue>>, ICollectionIDictionaryIEnumerableIDeserializationCallbackISerializable
    {
        private delegate TRet Transform<TRet> (TKey keyTValue value);

        //
        // Properties
        //
        public IEqualityComparer<TKeyComparer
        {
            get
            {
                return this.hcp;
            }
        }

        public int Count
        {
            get
            {
                return this.count;
            }
        }

        bool IDictionary.IsFixedSize
        {
            get
            {
                return false;
            }
        }

        bool IDictionary.IsReadOnly
        {
            get
            {
                return false;
            }
        }

        bool ICollection<KeyValuePair<TKeyTValue>>.IsReadOnly
        {
            get
            {
                return false;
            }
        }

        bool ICollection.IsSynchronized
        {
            get
            {
                return false;
            }
        }

        public Dictionary<TKeyTValue>.KeyCollection Keys
        {
            get
            {
                return new Dictionary<TKeyTValue>.KeyCollection (this);
            }
        }

        ICollection<TKeyIDictionary<TKeyTValue>.Keys
        {
            get
            {
                return this.Keys;
            }
        }

        ICollection IDictionary.Keys
        {
            get
            {
                return this.Keys;
            }
        }

        object ICollection.SyncRoot
        {
            get
            {
                return this;
            }
        }

        ICollection<TValueIDictionary<TKeyTValue>.Values
        {
            get
            {
                return this.Values;
            }
        }

        public Dictionary<TKeyTValue>.ValueCollection Values
        {
            get
            {
                return new Dictionary<TKeyTValue>.ValueCollection (this);
            }
        }

        ICollection IDictionary.Values
        {
            get
            {
                return this.Values;
            }
        }

        //
        // Indexer
        //
        object IDictionary.this [object key]
        {
            get
            {
                if (key is TKey && this.ContainsKey ((TKey)((object)key)))
                {
                    return this [this.ToTKey (key)];
                }
                return null;
            }
            set
            {
                this [this.ToTKey (key)] = this.ToTValue (value);
            }
        }

        public TValue this [TKey key]
        {
            get
            {
                if (key == null)
                {
                    throw new ArgumentNullException ("key");
                }
                int num = this.hcp.GetHashCode (key) | -2147483648;
                for (int num2 = this.table [(num & 2147483647) % this.table.Length] - 1num2 != -1num2 = this.linkSlots [num2].Next)
                {
                    if (this.linkSlots [num2].HashCode == num && this.hcp.Equals (this.keySlots [num2], key))
                    {
                        return this.valueSlots [num2];
                    }
                }
                throw new KeyNotFoundException ();
            }
            set
            {
                if (key == null)
                {
                    throw new ArgumentNullException ("key");
                }
                int num = this.hcp.GetHashCode (key) | -2147483648;
                int num2 = (num & 2147483647) % this.table.Length;
                int num3 = this.table [num2] - 1;
                int num4 = -1;
                if (num3 != -1)
                {
                    while (this.linkSlots [num3].HashCode != num || !this.hcp.Equals (this.keySlots [num3], key))
                    {
                        num4 = num3;
                        num3 = this.linkSlots [num3].Next;
                        if (num3 == -1)
                        {
                            break;
                        }
                    }
                }
                if (num3 == -1)
                {
                    if (++this.count > this.threshold)
                    {
                        this.Resize ();
                        num2 = (num & 2147483647) % this.table.Length;
                    }
                    num3 = this.emptySlot;
                    if (num3 == -1)
                    {
                        num3 = this.touchedSlots++;
                    }
                    else
                    {
                        this.emptySlot = this.linkSlots [num3].Next;
                    }
                    this.linkSlots [num3].Next = this.table [num2] - 1;
                    this.table [num2] = num3 + 1;
                    this.linkSlots [num3].HashCode = num;
                    this.keySlots [num3] = key;
                }
         
| whaison | Unity3d | 14:47 | comments(0) | - | pookmark |
            
2014.11.05 Wednesday
Unity 4.6.20 MonoDevelopでのデバッグがフリーズするので困っている件

1、Unity Editer(menu: Assets > Sync MonoDevelop Project)で  MonoDevelop が起動、もしくはSyncされます。

2、MonoDevelopの行番号の左のグレーのバーをクリックしてブレークポイントを設定します

3、MonoDevelop の▶︎矢印をクリックするとプロセスにアタッチのウィンドウが出ます。

4、プロセスにアタッチの中からUnity Editor(Unity)を選び、「アタッチ」を押します。

フリーズします。笑 たまにパネルが消えて気分で動きマッス

5、おい。。。。。



 

5.ブレークポイントの位置で止まるので、ステップ実行等をする。

mono3

これでステップ実行しながら、値の確認等ができます。

http://bribser.co.jp/blog/monodevelopdebug/ さんから引用ですが
>ただ、デバッカを使うとよくフリーズしてしまいます。
>私の場合は、Unityを実行してから、MonoDevelopをアタッチし、
>終了する時は、MonoDevelopのアタッチを停止してから、Unityを停止する
>というようにするとフリーズしなくなりました。

とありますが。あまり関係あるように思えません。涙




別環境のMac Unity4.5.4f1では起きない様子。

機種名:    MacBook Pro

  機種 ID:    MacBookPro11,3

  プロセッサ名:    Intel Core i7

  プロセッサ速度:    2.6 GHz

  プロセッサの個数:    1

  コアの総数:    4

  二次キャッシュ(コア単位):    256 KB

  三次キャッシュ:    6 MB

  メモリ:    16 GB




 

後日
再起動したらなぜかすんなりうごくようになりました。嬉しい
| whaison | Unity3d | 18:36 | comments(0) | - | pookmark |