Get it on Google Play


Wm뮤 :: 자주 쓰는 USharp 코드

블로그 이미지
가끔 그림그리거나 3D모델링하거나
취미로 로봇만드는
퇴직한 전자과 게임프로그래머
2020.3.48f1 , 2022.3.6f1 주로 사용
모카쨩
@Ahzkwid

Recent Comment

Archive


2023. 1. 22. 00:30 게임/VRChat

자주 쓰는 U# 코드들이다

 

 

핸들이 손에 잡힌 상태인지

GetComponent<VRC_Pickup>().IsHeld
//주의: GetComponent<VRC_Pickup>().currentHand != VRC_Pickup.PickupHand.None는 오작동하므로 쓰면 안됨

 

왼손으로 잡혀있는지

GetComponent<VRC_Pickup>().currentHand == VRC_Pickup.PickupHand.Left

 

 

 

 

변수동기화

[UdonSynced]
int state = 0;

 

 

 

매뉴얼 동기화 예제

이 코드는 종각역 만들때 썼다

using UdonSharp;
using UnityEngine;
using UnityEngine.UI;
using VRC.SDKBase;
using VRC.Udon;

[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class StageText : UdonSharpBehaviour
{
    [UdonSynced]
    [Multiline]
    public string syncText;

    public Text textUI;


    public void UpdateText(string text)
    {
        Networking.SetOwner(Networking.LocalPlayer, gameObject);
        syncText = text;
        RequestSerialization();
    }
    void Update()
    {
        textUI.text = syncText;
    }
}

 

 

 

텔레포트

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;

[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
public class TeleportUS : UdonSharpBehaviour
{
    public Transform teleportTarget;
    public override void Interact()
    {
        Networking.LocalPlayer.TeleportTo(teleportTarget.position, teleportTarget.rotation);
    }
}

 

 

 

 

스크립트 LOD

기본 LOD도 훌륭하지만 이걸 쓰는 이유는 라이팅이나 스크립트 On Off도 용이하기 때문이다

몰론 그렇다고 이거만 쓰진 말고 기본 LOD와 병행해서 쓰자

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;

[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
public class ScriptLOD : UdonSharpBehaviour
{

    public float radius = 20;
    public GameObject[] hqObjects;
    public GameObject[] lqObjects;
#if UNITY_EDITOR
    void OnDrawGizmos()
    {
        Gizmos.DrawWireSphere(transform.position, radius);
    }
#endif
    void Update()
    {
        var active = Vector3.Distance(Networking.LocalPlayer.GetPosition(), transform.position) < radius;
        foreach (var obj in hqObjects)
        {
            obj.SetActive(active);
        }
        foreach (var obj in lqObjects)
        {
            obj.SetActive(!active);
        }
    }
}

'게임 > VRChat' 카테고리의 다른 글

Booth 선물 방법  (0) 2023.04.14
VRChat 캐릭터 압착되는 문제  (0) 2023.01.01
VRChat OSC  (0) 2022.02.19
posted by 모카쨩

  • total
  • today
  • yesterday

Recent Post

저사양 유저용 블로그 진입