[過去ログ] 【3Dゲームエンジン】Unity質問スレッド37 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
357(1): 2018/09/01(土)20:22 ID:UGSVVFgg(1) AAS
動画リンク[YouTube]
しゅごい
358(2): 2018/09/01(土)22:22 ID:IUdfd8aa(1) AAS
>>333
ありがとうございます。
AssetBundleについてある程度調べたのですが、
AssetBundle.LoadFromFileにする場合、
AndroidでStreamingAssetフォルダからファイルを読み込む際の
pathの設定の仕方がよくわかりません。
外部リンク:tsubakit1.hateblo.jp
このページ内の
「1.ABに8枚ずつ格納し、全てのスプライトを逐次ロードする(コード)」のところにある参考コード
外部リンク:gist.github.com
内の19行目
var assetbundle = AssetBundle.LoadFromFile (Application.streamingAssetsPath + assetbundlename );
はPC・iOS用のようです。
Unity公式のこの説明によると、
外部リンク[html]:docs.unity3d.com
PC・iOS では
`path = Application.dataPath + "/StreamingAssets";`
Android では
`path = "jar:file://" + Application.dataPath + "!/assets/";`
となっています。
Androidではどういうコードにすればいいのでしょうか。
よろしくお願いします。
359: 2018/09/01(土)22:31 ID:eD+6IIeI(1) AAS
仕事でアプリ作ってる会社員が5chで質問ですかい。
身元明かしたTwitterアカウント使ってTwitterでも同じ質問してるからバレバレ。
360: 2018/09/01(土)23:34 ID:Es+L0jYP(1) AAS
>>357
しょごいのぅ(´・ω・`)
361(1): 2018/09/02(日)17:54 ID:a1E2xZdG(1) AAS
>>358
わいも仕事でゲーム作ってて躓いたとこやから、
まあ最初はみな同じところで躓くんだろうなw
答えはググると全部出てくるんだけど。
初心者質問スレに別の質問してるみたいだから解決したのか?
自己解決したなら報告はせなあかんで(´・ω・`)
362(1): 2018/09/02(日)20:24 ID:FDNByjh9(1) AAS
>>361
いえ、全然まだ解決してません。
公式にこんなのを見つけたので、
最新版ではAndroidでも平気になったのかなと思ったのですがよくわかりません。
外部リンク[html]:docs.unity3d.com
>(注記) Android デバイスで、 バージョン 5.3 またはそれ以前の Unity をお使いの場合、
>この API で Streaming Assets パスからアセットバンドルを呼び出そうとすると失敗します。
>これは、このパスのコンテンツが圧縮 .jar ファイル内に存在しているためです。
>Unity 5.4 以降では、 Streaming Assets にも API コールを問題なく使用できます。
ググり方が悪いのか日本語で見つかりません。
どこかに見本コードはないのでしょうか
ちなみにTwitterの人は別人です。
ここで躓く人多いんでしょうね。
363(1): 2018/09/02(日)21:01 ID:mIWQgsj0(1) AAS
>>362
そのような場合はアセットを買えばできるかもしれませんよ
364(1): 2018/09/03(月)00:54 ID:7KElhPKv(1/3) AAS
>>358
「"jar:file://" "Application.streamingAssetsPath"」でググって
検索結果の各サイトを見て回るといいかもね。
365(3): 2018/09/03(月)07:20 ID:h+zzshNm(1/4) AAS
>>364
外部リンク[html]:docs.unity3d.com
の
public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile");
public string result = "";
IEnumerator Example() {
if (filePath.Contains("外部リンク:")) {
Networking.UnityWebRequest www = Networking.UnityWebRequest.Get(filePath);
yield return www.SendWebRequest();
result = www.downloadHandler.text;
} else
result = System.IO.File.ReadAllText(filePath);
}
を
public class ExampleClass : MonoBehaviour {
の後ろに入れたりしてみましたが、
「Networking.」のところに波線が出てエラーになります。
これじゃないのでしょうか
366(1): 2018/09/03(月)07:40 ID:D1zSI/V/(1) AAS
エラーなんて言ってんねん
367: 2018/09/03(月)08:56 ID:h+zzshNm(2/4) AAS
>>366
「型または名前空間の名前"Networking"が見つかりませんでした。
(usingディレクティブまたはアセンブリ参照が指定されていることを確認してください)」と
「現在のコンテキストに"Networking"という名前は存在しません」です。
368: 2018/09/03(月)10:41 ID:8h4Ml9bj(1) AAS
スクリプトの知識がない人はアセットを買いましょう
369(1): 弟子 ◆rZPPjYuxmQ 2018/09/03(月)14:00 ID:r808owkb(1) AAS
>>365
一応下記の形式で完全修飾するといけますね
UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Get(filePath);
370: 365 2018/09/03(月)20:09 ID:h+zzshNm(3/4) AAS
>>369
ありがとうございます。
その形にしたらエラーにならず、一応ビルドできました。
アセットバンドルの手順についてなんですが、
読み込む画像はAssetBundleにしてStreamingAssets内に入れてあっても、
当然ヒエラルキーの中に入れていいんですよね。
(ポジションを指定しなきゃいけないから当然か)
そして、ヒエラルキーに作った空のGameObjectに
アセットバンドルをロードするコードC#をくっつけて、
このコードが正しければ意図したように動くという感じでいいのでしょうか。
371(1): 2018/09/03(月)21:40 ID:7KElhPKv(2/3) AAS
>>365
おおまかな手順は以下でいいよ。
手順以外の詳しいことはググれば全部出てくるのでそっちを参考。
エラーメッセージはググって自己解決する癖をつけるべし。
?ロード用スクリプトを含んだシーンを1つだけAssetBundle化せずに作っておく。
?他のシーンは各AssetBundle化して、都度StreamingAssetsからロードする。
(シーンに含まれたリソースは勝手にシーンのBundleに含まれる)
?シーンのBundle化が上手くロード出来たら、次はリソース種別単位でBundle化。
(依存関係が勝手に処理されてBundle化したリソースが共用できるようになる)
?Unityのログ(Editor.log)を見て不要なリソースが実行体に含まれない事を確認する。
372(4): 2018/09/03(月)22:32 ID:h+zzshNm(4/4) AAS
>>371
ありがとうございます。
>他のシーンは各AssetBundle化して、都度StreamingAssetsからロードする。
このロードの仕方についてなのですが、
例えば、画像(リソース)A、B、C、D、E、Fを使って
初めにAのみを表示させ、次にBCを、その次にDEFを表示させ、
最終的に左から「ABCDEF」の形に繋がるように並べて表示させる場合、
初めのAを表示させた段階で画面をタッチしてズーム、スクロールなどして動かしている状態で、
後からBCが読み込まれてもAが消えずに維持され、ズームなどカメラの状態も維持されたまま、
自然とBC、DEFが表示されるような形にしたいと思っているのですが、
これを実現させるためのコードはどういったものになるのでしょうか?
普通にシーンを順に読み込ませると、前のシーンは消えてしまいますよね。
373(1): 2018/09/03(月)23:22 ID:7KElhPKv(3/3) AAS
>>372
シーンにシーンを追加読み込みさせることも出来るし、
シーン内で各リソースの読み込み進捗を取って表示を切り替えていく方法もある。
その辺はググったサイトを巡って行けば日本人で試している人がいるのでここでは省くよ。
あとは自分で数日調べて、それでも駄目なら質問を。
374: 菩薩@太子 2018/09/04(火)19:34 ID:fB3m1gE/(1) AAS
>>353
>>354
>>363
汝は、適切なアセットがあったら、質問者に紹介しなさい。
我が見守るこのスレで、誉れと思って、汝のなすべきことをしなさい。
375(1): 2018/09/05(水)09:27 ID:LObw2JkS(1) AAS
>>274
の件ですがアプリ起動直後ではなくタイトル画面が表示されてゲームに進む時に
アセットバンドルをダウンロードするようにしたらアップルの審査を通りました
キャラクターメイクで名前や性別を選択させたら個人情報を収集するなと言われたり
アップルの審査はわけわかりません
376: 2018/09/05(水)09:29 ID:X/VeEXhP(1) AAS
>>375
これだからリンゴは嫌だ
377: 2018/09/05(水)09:44 ID:UJiyGZvy(1) AAS
災害と思って受け入れるんや
378(2): 372 2018/09/05(水)20:24 ID:FttgcJ8p(1/4) AAS
>>373
いくつかのページを参考にして作ってみたのですがうまくいきません。
どう直したらいいのでしょうか?
基本的な間違いだらけだと思いますがよろしくお願いします。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class ExampleClass : MonoBehaviour
{
public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile");
public string result = "";
IEnumerator Example()
{
if (filePath.Contains("外部リンク:"))
{
UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Get(filePath);
yield return www.SendWebRequest();
result = www.downloadHandler.text;
}
else
result = System.IO.File.ReadAllText(filePath);
}
}
(続く)
379(1): 372 2018/09/05(水)20:25 ID:FttgcJ8p(2/4) AAS
(続き)
public class Csコード名 : MonoBehaviour
{
IEnumerator Start()
{
var assetbundleNames = new string[] { "/アセットバンドル名", "/アセットバンドル名", "/アセットバンドル名" };
yield return new WaitWhile(() => Input.GetMouseButtonDown(0) == false);
float time = Time.realtimeSinceStartup;
foreach (var assetbundlename in assetbundleNames)
{
var assetbundle = AssetBundle.LoadFromFile(Application.streamingAssetsPath + assetbundlename);
}
Debug.Log(Time.realtimeSinceStartup - time);
}
}
(了)
380(1): 2018/09/05(水)20:40 ID:HE6HGHLy(1) AAS
アセット買えばいいよガイジまだいるのか…もう何か月になるよ?
381(1): 2018/09/05(水)21:29 ID:rC3yFaN9(1) AAS
>>378
それだとエスパーしか答えられないから、どこで何がうまくいかないのか、
どういうエラーが出て自分の予想ではどうなのか位は情報を出したほうがいいよ。
全部他人に投げるような初心者ならAssetBundleを触るには早すぎる。
382(1): 2018/09/05(水)21:40 ID:VDfq+tNw(1) AAS
2DでAnimationClipのSpriteをコードで切り替える方法はないだろうか?いくつも作るのめんどい。ネットではTextureの描画置き換える方法はあるがこれだとエフェクト的なものがうまくかからないし負荷も高そうだしね。何か良い方法は発見されてないですか?
383(2): 2018/09/05(水)22:09 ID:FttgcJ8p(3/4) AAS
>>381
そうですね、すいません
詳しく書きます
AssetBundle化しないScene1に入れたものは
「初めに表示させる画像」「メインカメラ」「>>378>>379のコードを貼った空のGameObject」で、
後から表示させたい画像のみを入れた3つのSceneをそれぞれAssetBundle化した3つをStreamingAssetに入れてあります。
Scene1をビルドしたところ、Scene1の画像が表示されただけで
いくら待ってもAssetBundle化したScene内の画像は表示されませんでした。
384(1): 2018/09/05(水)23:26 ID:xBD4Z+oX(1) AAS
>>383
まずはdebug.log使ってどこまで動いてるか確かめてみるといいと思います
385: 2018/09/05(水)23:45 ID:FttgcJ8p(4/4) AAS
>>384
ありがとうございます。
このコードで一目見て明らかに間違ってるようなところがあったら教えてください。
386: 2018/09/06(木)02:36 ID:lvz6A9xk(1) AAS
>>383
スレが汚れるのであんまりコードで教えたくは無いんだが、
if (!System.IO.File.Exists(path)) {
Debug.LogWarning("file not found. (path ='" + path + "')");
}
でStreamingAssetのパスが想定通りか、ファイルが存在するかチェックする。
問題なければ、result部分にブレイクポイントを置いて到達しているか確認。
到達していなければ各行のコードの前後にデバッグログを出力してどこで止まってるか確認。
各処理が何をやってるか理解できてないのであれば、それ以前の問題なので勉強しよう。
上下前次1-新書関写板覧索設栞歴
あと 616 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.017s