回答編集履歴

1

追記

2018/06/17 03:45

投稿

fiveHundred
fiveHundred

スコア9774

test CHANGED
@@ -45,3 +45,141 @@
45
45
  }
46
46
 
47
47
  ```
48
+
49
+
50
+
51
+ ---
52
+
53
+
54
+
55
+ 追記:
56
+
57
+ 「再生が開始されるまでは、変更前の動画のままにする」という考えの元、以下のソースを試してみたのですがどうでしょう?
58
+
59
+ (※VideoPlayer1とVideoPlayer2は別々のゲームオブジェクトに配置してください)
60
+
61
+
62
+
63
+ ```C#
64
+
65
+ using System.Collections;
66
+
67
+ using System.Collections.Generic;
68
+
69
+ using UnityEngine;
70
+
71
+ using UnityEngine.Video;
72
+
73
+
74
+
75
+ public class VideoChangeScript : MonoBehaviour
76
+
77
+ {
78
+
79
+ // インスペクター上でVideoPlayerを指定
80
+
81
+ public VideoPlayer VideoPlayer1;
82
+
83
+ public VideoPlayer VideoPlayer2;
84
+
85
+
86
+
87
+ Renderer videoPlayer1Renderer;
88
+
89
+ Renderer videoPlayer2Renderer;
90
+
91
+
92
+
93
+ void Start()
94
+
95
+ {
96
+
97
+ videoPlayer1Renderer = VideoPlayer1.GetComponent<Renderer>();
98
+
99
+ videoPlayer2Renderer = VideoPlayer2.GetComponent<Renderer>();
100
+
101
+
102
+
103
+ videoPlayer1Renderer.enabled = true;
104
+
105
+ videoPlayer2Renderer.enabled = false;
106
+
107
+
108
+
109
+ VideoPlayer1.Play();
110
+
111
+ VideoPlayer2.Stop();
112
+
113
+ }
114
+
115
+
116
+
117
+ void Update()
118
+
119
+ {
120
+
121
+ if (Input.GetKeyDown(KeyCode.Space))
122
+
123
+ {
124
+
125
+ StartCoroutine(changeCoroutine());
126
+
127
+ }
128
+
129
+ }
130
+
131
+
132
+
133
+ IEnumerator changeCoroutine()
134
+
135
+ {
136
+
137
+ // ロード開始
138
+
139
+ VideoPlayer2.Prepare();
140
+
141
+
142
+
143
+ // ロード完了まで待機
144
+
145
+ while (!VideoPlayer2.isPrepared)
146
+
147
+ {
148
+
149
+ yield return null;
150
+
151
+ }
152
+
153
+
154
+
155
+ VideoPlayer2.Play();
156
+
157
+
158
+
159
+ // 再生するまで待機
160
+
161
+ while (!VideoPlayer2.isPlaying)
162
+
163
+ {
164
+
165
+ yield return null;
166
+
167
+ }
168
+
169
+ yield return null;
170
+
171
+
172
+
173
+ videoPlayer2Renderer.enabled = true;
174
+
175
+
176
+
177
+ videoPlayer1Renderer.enabled = false;
178
+
179
+ VideoPlayer1.Stop();
180
+
181
+ }
182
+
183
+ }
184
+
185
+ ```