- 投稿日:2021-03-08T17:46:45+09:00
Unityのテクスチャ
Unity】Texture を Texture2D に変換する拡張メソッド using UnityEngine; public static class TextureExt { public static Texture2D ToTexture2D( this Texture self ) { var sw = self.width; var sh = self.height; var format = TextureFormat.RGBA32; var result = new Texture2D( sw, sh, format, false ); var currentRT = RenderTexture.active; var rt = new RenderTexture( sw, sh, 32 ); Graphics.Blit( self, rt ); RenderTexture.active = rt; var source = new Rect( 0, 0, rt.width, rt.height ); result.ReadPixels( source, 0, 0 ); result.Apply(); RenderTexture.active = currentRT; return result; } } Unityのテスクチャコピー(deep) { //参照だとダメ // m_materials[name_list_curr].mainTexture = m_updatetex2d; //ConvertTextureはダメ: 何も表示されない //Graphics.ConvertTexture(m_updatetex2d, m_materials[name_list_curr].mainTexture); // CopyTextureはdeepcopy:何も表示されない //Graphics.CopyTexture(m_updatetex2d, m_materials[name_list_curr].mainTexture); //SetPixelsによるdeepcopy if (true) { var originalTexture = m_updatetex2d; Texture2D copyTexture = new Texture2D(originalTexture.width, originalTexture.height, TextureFormat.ARGB32, false); copyTexture.SetPixels32(originalTexture.GetPixels32()); copyTexture.Apply(); m_materials[name_list_curr].mainTexture = copyTexture; } // 外部テクスチャはコピーできない? if (false) { int texid = getTextureID4Unity(); if (texid != -1) { IntPtr texidptr = new IntPtr(texid); Texture2D nativeTexture = Texture2D.CreateExternalTexture( tex_sizeX, tex_sizeY, TextureFormat.ARGB32, false, false, texidptr ); IntPtr nativeData = nativeTexture.GetNativeTexturePtr(); m_tex2d_2.UpdateExternalTexture(nativeData); { var originalTexture = m_tex2d_2; Texture2D copyTexture = new Texture2D(originalTexture.width, originalTexture.height, TextureFormat.ARGB32, false); copyTexture.SetPixels32(originalTexture.GetPixels32()); copyTexture.Apply(); m_materials[name_list_curr].mainTexture = copyTexture; } //m_materials[name_list_curr].mainTexture = m_tex2d_2; } } }
- 投稿日:2021-03-08T17:42:33+09:00
【便利なUnityプラグイン】GitHub for Unityを使ってみよう
- 投稿日:2021-03-08T11:57:41+09:00
【unity】VRでマルチゲーを作るときに比較したネットワークエンジンの特徴
はじめに
VRでマルチゲームを作ろうとしているのですが、それぞれのネットワークエンジンのメリットデメリットをがわからなかったのでまとめてみました。
1.photon
メリット
- 英語日本語とも情報量が多い
- 20CCU,転送量60GB
デメリット
- 1秒に500メッセージと制限がある
2.モノビットエンジン
メリット
- 国産ネットワークエンジンだから公式開発者コミュニティが日本語
- 公式の対応が早い
- メッセージの制限がない(重要)
- VRボイスチャット機能があるデメリット
- photonと比べると情報量が少ない
- まだ海外へ対応はされていない?
3.strix
メリット
- prehabを置くだけでログインができるなど実装が簡単
デメリット
- 情報量が圧倒的に少ない
- ルーム機能はない
- 一般的なネットワークエンジンとは仕様がかなり異なる
まとめ
一般的なマルチゲームが作りたい!
→ 情報量の多いphotonがおすすめVRゲームや物理演算を頻繁に行うゲームを作りたい!
→ メッセージの制限がなく、VRボイスチャット機能があるモノビットエンジンがおすすめ単純なマルチゲームを手早く実装したい!
→ 学習コストの低いstrixがおすすめ最後に
自分はVRマルチゲーをつくりたいのでモノビットエンジンを使ってみます!
参考にしたサイト
- 投稿日:2021-03-08T11:57:41+09:00
【unity】VRでマルチゲームを作るためのネットワークエンジンの特徴比較
はじめに
VRでマルチゲームを作ろうとしているのですが、それぞれのネットワークエンジンの特徴がわからなかったのでまとめてみました。
1.photon
メリット
- 英語日本語とも情報量が多い
- 20CCU,転送量60GBと他ネットワークエンジンと比べて多い
デメリット
- 1秒間に500メッセージの制限がある
2.モノビットエンジン
メリット
- 国産ネットワークエンジンだから公式開発者コミュニティが日本語
- 公式の対応が早い
- メッセージの制限がない(重要)
- VRボイスチャット機能があるデメリット
- photonと比べると情報量が少ない
- まだ海外へ対応はされていない?
3.strix
メリット
- prehabを置くだけでログインができるなど実装が簡単
デメリット
- 情報量が圧倒的に少ない
- ルーム機能はない
- 一般的なネットワークエンジンとは仕様がかなり異なる
まとめ
一般的なマルチゲームが作りたい!
→ ネットの情報量の多いphotonがおすすめVRゲームや物理演算を頻繁に行うゲームを作りたい!
→ メッセージの制限がなく、VRボイスチャット機能があるモノビットエンジンがおすすめ単純なマルチゲームを手早く実装したい!
→ 学習コストの低いstrixがおすすめ最後に
自分はVRマルチゲームをつくりたいのでモノビットエンジンを使ってみます!
ひびきんぐ(@hibiking3456789)といいます!
仕事と趣味の両方でXR三昧。最近はVRマルチゲーム作ってます。
XR開発のことを発信しているのでよければフォローしてください!プチ宣伝
私たちDENDOH Inc.ではARを用いた購買体験や、3Dクリエイター向けのサービスを開発しています。
一緒に働きたい方、学生でインターンしたい方をエンジニアに限らず募集しています!
興味のある方はひびきんぐのDMまでお声掛けください!参考にしたサイト
- 投稿日:2021-03-08T08:58:30+09:00
Unityのエラー『All Compiler Errors Have To Be〜』と『error CS0234: The type or namespace name〜』の解決方法をまとめる【備忘録】
ユニティちゃん入れて実行したらエラー出たんで、解決方法を備忘録的にまとめていきます。
エラー内容はタイトルにある通りです。
エラー1つ目
”All Compiler Errors Have To Be Fixed Before You Can Enter Playmode!”エラー2つ目
error CS0234: The type or namespace name 'Policy' does not exist in the namespace 'System.Security' (are you missing an assembly reference?)順番に解説していきます。
”All Compiler Errors...”の意味→エラー出てるから直せ
All Compiler Errors Have To Be Fixed Before You Can Enter Playmode!”こいつをgoogle翻訳にかけると、
「プレイモードに入る前に、すべてのコンパイラエラーを修正する必要があります!」
とのこと。
なるほど、どうやらどこかでエラーが出てるらしいですね...ってことで、Unityのコンソール内容を確認したところ、、、
error CS0234: The type or namespace name 'Policy' does not exist in the namespace 'System.Security' (are you missing an assembly reference?)とのことです。
例のごとくgoogle翻訳にかける。英訳
エラーCS0234:タイプまたは名前空間名「ポリシー」が名前空間「System.Security」に存在しません(アセンブリ参照がありませんか?)
いや、アセンブリの参照とか知りませんわ、って話。
引き続きエラー内容で調査すると、先人の記事を発見しました。【Unity】Unity-Chan!(ユニティちゃん)でCS0234エラーが発生したときの調査結果と解決方法 - Qiita
こちらの記事によると、スクリプト内のusing節から
System.Security.Policy
をコメントアウトし、セーブすればOKとのことです。
早速やっていきましょう。『AutoBlink.cs』の内容を修正
エラーが出てると言われたスクリプトファイル、
AutoBlink.cs
を修正していきます。スクリプトのファイルパス
Assets/UnityChan/Scripts/AutoBlink.cs
//エラー修正前 // //AutoBlink.cs //オート目パチスクリプト //2014/06/23 N.Kobayashi // using UnityEngine; using System.Collections; using System.Security.Policy;//エラー修正後 // //AutoBlink.cs //オート目パチスクリプト //2014/06/23 N.Kobayashi // using UnityEngine; using System.Collections; //using System.Security.Policy;//←ここをコメントアウト修正してビルドをかけたら直りました。
先人に感謝です。参考記事にはこのような事も書かれてました。
Unity Japan公式に問い合わせたところ、使っていないので消しちゃって大丈夫との返事をもらったそうです。
とのことらしいです。
最新バージョンとかでは修正されてるらしいので、
AutoBlink.cs
のファイル自体を新しくするって解決策もあるようです。所感
エラーを調べてたら、次なるエラーが出てきて、それを調べてたらまた次のエラーが出てきてそれを調べてたら。。。
エンジニアの領域って、コード書いてる時間より、エラーを解決してる時間の方が長いよね
って感じてます。まぁクリエイティブって、そういう事ですもんね。
でもありがたいことに、先人達が答えをおいてくれてるんで助かってます。
Qiita万歳、ネット社会万歳。エラー内容でググれば、たいてい事は何とかなる
(気がする…)引き続き頑張ろ。