【发布时间】:2016-05-10 05:09:01
【问题描述】:
我有一个脚本来改变对象的行为。假设行为 1 坐、2 跳、3 走、4 跑。然后有一个附加到对象的脚本来改变对象的行为。例如,洗牌行为是 3-1-2-4。当我复制对象时,所有复制的对象都具有相同的随机播放结果,因此所有对象的行为都是相同的。我想要的是不同的对象有不同的随机播放结果。我能想到的就是为每个对象制作一个不同的脚本,但这并不高效。
[edit] 这是附加到对象的脚本
using UnityEngine;
using System.Collections;
public class StudentScript : MonoBehaviour {
private System.Random _random = new System.Random();
private Animator animator;
float sec;
int[] array = { 1, 2, 3, 4, 5};
int m;
public GameManage gm;
public Animator pengawasAnim;
public Animator signAnim;
void Start () {
animator = GetComponent<Animator> ();
sec = 0f;
m = 0;
Shuffle(array);
foreach (int value in array)
{
Debug.Log(value);
}
}
void Update () {
sec+=Time.deltaTime;
if (sec >= 3f && m<5 && animator.GetInteger ("Behav") == 0) {
StudentBehaviour(array[m]);
}
//Debug.Log ("sec "+sec);
if (animator.GetInteger ("Behav") != 0) {
if (sec >= 5)
animator.SetTrigger ("ToDont");
if (sec >= 10)
animator.SetTrigger ("ToEffect");
}
}
public void StudentBehaviour(int n){
animator.SetInteger ("Behav", n);
sec = 0f;
Debug.Log ("jadi "+n);
}
public void ResetStudentBehaviour(){
if (animator.GetInteger ("Behav") != 0) {
pengawasAnim.SetTrigger("Approach");
if (sec >= 0f && sec <=5f) {
signAnim.SetTrigger ("ToYellow");
animator.SetTrigger ("Told1");
gm.AddScore (5);
}else if (sec >= 5f && sec <=10f) {
signAnim.SetTrigger ("ToOrange");
animator.SetTrigger ("Told2");
animator.ResetTrigger ("ToDont");
gm.AddScore (3);
}else if (sec >= 10f) {
signAnim.SetTrigger ("ToRed");
animator.SetTrigger ("Told3");
animator.ResetTrigger ("ToEffect");
gm.AddScore (1);
}
animator.SetInteger ("Behav", 0);
sec = 0f;
Debug.Log ("reset");
if (m < 5) {
m++;
}
Debug.Log ("m = " + m);
Debug.Log ("sec "+sec);
}else
Debug.Log ("student done <3");
}
void Shuffle(int[] array){
int p = array.Length;
for (int n = p-1; n > 0 ; n--)
{
int r = _random.Next(0, n);
int t = array[r];
array[r] = array[n];
array[n] = t;
}
}
我想要的是复制学生(带护目镜的那个),这样每个学生的行为都会不同
【问题讨论】:
-
但是如果没有您的代码,我们如何为您提供帮助?怎么能看到你是如何复制你的对象的?
-
@Programmer 已编辑。对不起:)
-
没问题。您用来复制学生的代码在哪里?这对于查明问题非常重要。
-
但我手动复制学生
-
来自编辑?不是来自代码?如果这是真的,那么你的洗牌代码就坏了