Files
2026-06-07 16:58:24 +01:00

122 lines
3.6 KiB
C#

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
//namespace UdonSharpTests
//{
[AddComponentMenu("")]
public class Test08_Instantiation : UdonSharpBehaviour
{
public GameObject sourcePrefab;
public int objectCount;
public float rotationOffset;
public float rotationSpeed;
private GameObject[] spawnedObjects;
[HideInInspector]
public UdonBehaviour otherBehaviour;
string[] listInitTest = new string[]
{
"Hello",
"test",
"string",
"aaaa",
};
private void testFunc(short input)
{
}
private void Start()
{
spawnedObjects = new GameObject[objectCount];
for (int i = 0; i < objectCount; ++i)
{
GameObject instantiatedObject = Instantiate(sourcePrefab);
UdonBehaviour behaviour = (UdonBehaviour)instantiatedObject.GetComponent(typeof(UdonBehaviour));
//Debug.Log(behaviour);
behaviour.SetProgramVariable("displayName", "hello");
//Debug.Log(behaviour.GetProgramVariable("displayName"));
instantiatedObject.SetActive(true);
instantiatedObject.transform.parent = transform;
//instantiatedObject.transform.position = Random.insideUnitSphere * 2f;
//instantiatedObject.transform.rotation = Random.rotation;
//instantiatedObject.transform.localScale *= Random.Range(0.2f, 1.5f);
spawnedObjects[i] = instantiatedObject;
}
}
private void OnEnable()
{
//testFunc(4);
//Debug.Log("hello! 15");
//foreach (var test in "hello")
//{
// Debug.Log(test);
//}
//ushort testVal = 4f;
//otherBehaviour.SendCustomEvent("PrintTest");
foreach (GameObject gameObj in spawnedObjects)
{
UdonBehaviour behaviour = (UdonBehaviour)gameObj.GetComponent(typeof(UdonBehaviour));
behaviour.SetProgramVariable("displayName", "hello");
}
Debug.Log($"initialized on frame {Time.frameCount}");
}
public override void OnPlayerJoined(VRCPlayerApi player)
{
Debug.LogFormat("Player {0} joined!", player.displayName);
}
private void FixedUpdate()
{
float time = Time.time;
float twoPi = Mathf.PI * 2f;
//Vector3 assignmentTarget = Vector3.zero;
//Vector3 assignmentSource = Vector3.zero;
Debug.Log($"Update manager frame {Time.frameCount}");
for (int i = 0; i < objectCount; ++i)
{
//assignmentTarget = assignmentSource;
GameObject spawnedObject = spawnedObjects[i];
//UdonBehaviour behaviour = (UdonBehaviour)spawnedObject.GetComponent(typeof(UdonBehaviour));
//behaviour.SetProgramVariable("displayName", "hello there");
Vector3 testVec = new Vector3(4, 5, 6);
float progress = ((i / (float)objectCount) + rotationSpeed * time) * twoPi;
Vector3 newPosition = new Vector3(Mathf.Sin(progress), 0f, Mathf.Cos(progress)) * rotationOffset + new Vector3(0f, Mathf.Cos(progress * 5f) * 0.2f, 0f);
spawnedObject.transform.localPosition = newPosition;
spawnedObject.transform.LookAt(transform.position, Vector3.up);
}
}
}
//}