Unity Visual Effect: Play () ไม่มีผลใด ๆ
Sep 11 2020
ฉันกำลังสร้างวิชวลเอฟเฟกต์ครั้งแรกและสร้างเอฟเฟกต์เมื่อเรือของฉันบิน ฉันอยากจะเล่นมันก็ต่อเมื่อเรือกำลังเคลื่อนที่เท่านั้น ฉันคิดว่ามันง่ายที่คุณเรียกว่า Play () มันจะเล่น คุณเล่น Stop () มันจะหยุด แต่เมื่อฉันโทรเล่นไม่มีอะไรเกิดขึ้น
public void Update()
{
_ship.Rotate(Input.GetAxis("Horizontal"));
var move = Input.GetAxis("Vertical");
_ship.Move(move);
if (move > 0)
{
FlyEffect.Play();
FlyEffect.SetVector3("Velocity", new Vector3(0, -_ship.Speed * move, 0));
}
else
{
FlyEffect.Stop();
}
}
เมื่อฉันปล่อยให้ใน Initial Event Name OnPlay มันกำลังเล่นตามที่ควรจะเป็น แต่ไม่มีอะไรจากสคริปต์ ... สิ่งที่ฉันขาดหายไปที่นี่?
คำตอบ
2 Zechy Sep 11 2020 at 00:30
โอเค ... ตอนแรกฉันคาดหวังว่าจะมีแอตทริบิวต์ภายในVisualEffectซึ่งจะบอกฉันว่ากำลังเล่นอยู่หรือไม่ ... แต่ไม่พบอะไรในลักษณะนั้น ดังนั้นฉันคิดว่ามันไม่ใช่ปัญหาใหญ่มากนักเมื่อคุณโทรเล่น ...
แต่เห็นได้ชัดว่า ... ตามที่ @DMGregory แนะนำฉันแค่เรียก Play () หนึ่งครั้งเพิ่มตัวแปรที่กำหนดเองเพื่อระงับสถานะหากกำลังเล่นอยู่
public void Update()
{
_ship.Rotate(Input.GetAxis("Horizontal"));
var move = Input.GetAxis("Vertical");
_ship.Move(move);
if (move > 0)
{
if (!_isPlaying)
{
FlyEffect.Play();
_isPlaying = true;
}
FlyEffect.SetVector3("Velocity", new Vector3(0, -_ship.Speed * move, 0));
}
else
{
if (_isPlaying)
{
FlyEffect.Stop();
_isPlaying = false;
}
}
}