質問編集履歴

1

コードを修正しました

2020/01/18 08:32

投稿

navesanta
navesanta

スコア198

test CHANGED
File without changes
test CHANGED
@@ -140,7 +140,99 @@
140
140
 
141
141
 
142
142
 
143
+ IEnmuratorを使って処理を非同期終了後に起きるようにしましたが
144
+
145
+ やはり取得することができません。
146
+
147
+
148
+
149
+ 修正したコードは下記です。
150
+
151
+
152
+
153
+ ```ここに言語を入力
154
+
143
- ここに問題に対して試したことを記載してください。
155
+ using System.Collections;
156
+
157
+ using System.Collections.Generic;
158
+
159
+ using UnityEngine;
160
+
161
+ using UnityEngine.AddressableAssets;
162
+
163
+ using UnityEngine.ResourceManagement.AsyncOperations;
164
+
165
+ using UnityEngine.UI;
166
+
167
+
168
+
169
+
170
+
171
+ public class Test2Script : MonoBehaviour
172
+
173
+ {
174
+
175
+ #pragma warning disable 649
176
+
177
+ [SerializeField]GameObject SoundsObject;
178
+
179
+ [SerializeField]GameObject ImageObject;
180
+
181
+
182
+
183
+ AudioSource testAudioSource;
184
+
185
+ AudioClip audioClip;
186
+
187
+ float audioClipNum; //メンバー変数で定義する
188
+
189
+
190
+
191
+ // Start is called before the first frame update
192
+
193
+ void Start()
194
+
195
+ {
196
+
197
+ testAudioSource = SoundObject.GetComponent<AudioSource>();
198
+
199
+ StartCoroutine("AddressableScript");
200
+
201
+
202
+
203
+ }
204
+
205
+ IEnumerator AddressableScript()
206
+
207
+ {
208
+
209
+ Addressables.LoadAssetAsync<AudioClip>("Assets/Sounds/epinpon.ogg").Completed += op =>
210
+
211
+ {
212
+
213
+ audioClip = op.Result as AudioClip;
214
+
215
+ SoundsObject.GetComponent<AudioSource>().PlayOneShot(audioClip);
216
+
217
+  audioClipNum = audioClip.length;
218
+
219
+ Debug.Log("InBlock" + audioClipNum); //ここでは正しい値が表示される
220
+
221
+ };
222
+
223
+ yield return null;
224
+
225
+ Debug.Log("OutBlock = " + audioClipNum);
226
+
227
+ }
228
+
229
+ }
230
+
231
+ //結果: OutBlock = 0
232
+
233
+ //結果: InBlock = 1.567347
234
+
235
+ ```
144
236
 
145
237
 
146
238