オブジェクトが破壊されたときに別のスクリプトメソッド(星)を呼び出したい、以下は私が行ったコードです。私が間違っていた提案はありますか?ここに私のコードです。別のスクリプトからの呼び出しメソッドC#Unity3d
using UnityEngine;
using System.Collections;
public class clear : MonoBehaviour {
// Use this for initialization
void Start() {
GetComponent<ParticleSystem>().emissionRate = 0;
}
// Update is called once per frame
void Update() {
if (Input.GetMouseButtonDown (1)) {
GetComponent<ParticleSystem>().Emit (10);
}
}
void OnParticleCollision(GameObject obj)
{
if (obj.gameObject.tag == "fire1") {
Destroy (obj, 5.0f);
TimingForIndust2 tim = GetComponent<TimingForIndust2>();
tim.stars();
}
StartCoroutine (TestCoroutine());
}
IEnumerator TestCoroutine(){
yield return new WaitForSeconds(8);
Application.LoadLevel (25);
}
}
ここにあなたのコメントを読むことでTimingForIndust2
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using MadLevelManager;
public class TimingForIndust2 : MonoBehaviour {
public Transform TimingBar;
public Transform TextIndicator;
public Transform TextRemaining;
[SerializeField] private float currentAmount;
[SerializeField] private float speed;
// method to reduce the time continously
void Update() {
if (currentAmount > 0) {
currentAmount -= speed*Time.deltaTime;
TextIndicator.GetComponent<Text>().text=((int)currentAmount).ToString()+"s";
TextRemaining.gameObject.SetActive(true);
} else {
TextRemaining.gameObject.SetActive(false);
TextIndicator.GetComponent<Text>().text="TimeUP";
Application.LoadLevel (62);
}
TimingBar.GetComponent<Image>().fillAmount = currentAmount/60;
}
public void stars()
{
if (currentAmount > 45.0f) {
MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_1", true);
MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_2", true);
MadLevelProfile.SetCompleted (MadLevel.currentLevelName, true);
} else if (currentAmount > 20.0f && currentAmount < 29.0f) {
MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_1", true);
MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_2", true);
MadLevelProfile.SetCompleted (MadLevel.currentLevelName, true);
} else if (currentAmount > 2.0f && currentAmount < 19.0f) {
MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_1", true);
}
}
}
「TimingForIndust2」スクリプトは、同じゲームオブジェクトに添付されていますか?(上記のスクリプトは「クリア」)が添付されていますか?または、 'timingForIndust2'が' fire1'タグでgameobjectにアタッチされていて、衝突を検出しますか? – Programmer
クリアスクリプトにはMy(消火器プリフェッブ)が付属しており、TimingForIndust2スクリプトはTimerに添付されています(タイマーは実際に時間が走っているキャンバスです)。 クリアスクリプトとTimingForIndust2スクリプトが別のオブジェクトに添付されています。 @Programmer –