- Home /
How to pass a Transform Array as an argument into a function in C#?
Hi, I'm converting my Ragdoll.js to C# and i'm have a problem with the AddChildren function. The "Add" keyword at "list.Add(parent);" is Red, and the error message is: " error CS0117: 'UnityEngine.Transform[]' does not contain a definition for 'Add' "
I already google it, but no success. Thanks in advance.
using UnityEngine;
using System.Collections;
public class Ragdoll : MonoBehaviour {
private Transform[] poseBones;
private Transform[] ragdollBones;
public void CopyPose(Transform pose) {
AddChildren(pose,poseBones);
AddChildren(transform,ragdollBones);
foreach (Transform b in poseBones) {
foreach (Transform r in ragdollBones) {
if (r.name == b.name) {
r.eulerAngles = b.eulerAngles;
break;
}
}
}
}
private void AddChildren(Transform parent, Transform [] list) {
list.Add(parent);
foreach (Transform t in parent) {
AddChildren(t,list);
}
}
void OnBecameInvisible () {
Destroy(this.gameObject);
}
}
Comment
you're passing an array
but treating it as a List
. try passing a List
.. or a ref
to it...
Best Answer
Answer by landon912 · Oct 06, 2015 at 01:02 AM
You want to use a List instead of a built-in array.
https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx
Thank you guys! I'm on track now.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Ragdoll : $$anonymous$$onoBehaviour {
//private List<Transform> poseBones = new List<Transform>();
//private List<Transform> ragdollBones = new List<Transform>();
//private var poseBones : Transform[];
//private var ragdollBones : Transform[];
private Transform[] poseBones;
private Transform[] ragdollBones;
//private var list = new Array();
public void CopyPose(Transform pose) {
AddChildren(pose,poseBones);
AddChildren(transform,ragdollBones);
foreach (Transform b in poseBones) {
foreach (Transform r in ragdollBones) {
if (r.name == b.name) {
r.eulerAngles = b.eulerAngles;
break;
}
}
}
}
private void AddChildren(Transform parent, List<Transform> list) {
list.Add(parent);
foreach (Transform t in parent) {
AddChildren(t,list);
}
}
void OnBecameInvisible () {
Destroy(this.gameObject);
}
}