Skip to content

Commit 2a722bf

Browse files
authored
Update README for repo move
1 parent bda5d9d commit 2a722bf

File tree

1 file changed

+3
-110
lines changed

1 file changed

+3
-110
lines changed

README.md

Lines changed: 3 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,5 @@
1-
# UdonSharp
2-
## An experimental compiler for compiling C# to Udon assembly
1+
# UdonSharp has moved to the VRChat-Community git https://github.com/vrchat-community/UdonSharp
32

4-
UdonSharp is a compiler that compiles C# to Udon assembly. UdonSharp is not currently conformant to any version of the C# language specification, so there are many things that are not implemented or will not work. If you want to learn C#, I don't recommend you use UdonSharp for learning as it is right now, since there may be language features tutorials assume exist that don't yet exist in U#.
3+
New issues and pull requests should be done on the vrchat-community repository.
54

6-
This compiler is in an early state and I have no prior experience making compilers. There has been very little work done on optimizations. Despite that, programs compiled by this generally perform similarly to their graph-compiled counterparts. Though due to how Udon currently handles copying structs, UdonSharp scripts can generate more garbage than the graph counterparts at the moment.
7-
8-
## Features that Udon supports which are currently not supported by U#
9-
- UdonSharp is currently at feature parity with the Udon graph as far as I am aware. Please message me or make an issue if you find something that should be supported, but is not.
10-
11-
## C# features supported
12-
- Automatic property and field accessor handling for getting and setting
13-
- Flow control
14-
- Supports: `if` `else` `while` `for` `do` `foreach` `switch` `return` `break` `continue` `ternary operator (condition ? true : false)` `??`
15-
- `goto` is not currently supported: https://xkcd.com/292/ I may add it in the future anyways
16-
- Extern method overload resolution with support for default arguments and `params` argument lists
17-
- Implicit and explicit type conversions
18-
- Arrays and array indexers
19-
- All builtin arithmetic operators
20-
- Conditional short circuiting `(true || CheckIfTrue())` will not execute CheckIfTrue()
21-
- `typeof()`
22-
- Extern methods with out or ref parameters (such as many variants of `Physics.Raycast()`)
23-
- User defined methods with parameters and return values. (This does not currently support method overloads, default parameter values, or `ref`/`params` parameters)
24-
- User defined properties
25-
- Unity/Udon event callbacks with arguments. For instance, registering a OnPlayerJoined event with a VRCPlayerApi argument is valid.
26-
- String interpolation
27-
- Field initializers
28-
- Jagged arrays
29-
- Referencing other custom classes, accessing fields, and calling methods on them
30-
- Recursive method calls are supported via the `[RecursiveMethod]` attribute
31-
32-
## Differences from regular Unity C# to note
33-
- For the best experience making UdonSharp scripts, make your scripts inherit from `UdonSharpBehaviour` instead of `MonoBehaviour`
34-
- `Instantiate()` uses a method named `VRCInstantiate()` currently since VRC handles instantiate differently.
35-
- If you need to call `GetComponent<UdonBehaviour>()` you will need to use `(UdonBehaviour)GetComponent(typeof(UdonBehaviour))` at the moment since the generic get component is not exposed for UdonBehaviour yet. GetComponent<T>() works for other Unity component types though.
36-
- Udon currently only supports array `[]` collections and by extension UdonSharp only supports arrays at the moment. It looks like they might support `List<T>` at some point, but it is not there yet.
37-
- Field initilizers are evaluated at compile time, if you have any init logic that depends on other objects in the scene you should use Start for this.
38-
- Use the `UdonSynced` attribute on fields that you want to sync.
39-
- Numeric casts are checked for overflow due to UdonVM limitations
40-
- The internal type of variables returned by `.GetType()` will not always match what you may expect since U# abstracts some types in order to make them work in Udon. For instance, any jagged array type will return a type of `object[]` instead of something like `int[][]` for a 2D int jagged array.
41-
42-
## Udon bugs that affect U#
43-
- Mutating methods on structs do not modify the struct (this can be seen on things like calling Normalize() on a Vector3) https://vrchat.canny.io/vrchat-udon-closed-alpha-bugs/p/raysetorigin-and-raysetdirection-not-working
44-
- Instantiated objects will lose their UdonBehaviours when instantiated from a prefab and cannot be interacted with/triggered https://vrchat.canny.io/vrchat-udon-closed-alpha-bugs/p/interactive-objects-break-after-being-clonedinstanciated-on-live-worlds
45-
46-
## Setup
47-
48-
### Requirements
49-
- Unity 2018.4.20f1
50-
- [VRCSDK3 + UdonSDK](https://vrchat.com/home/download)
51-
- The latest [release](https://github.com/Merlin-san/UdonSharp/releases/latest) of UdonSharp
52-
53-
### Installation
54-
1. Read the getting started with Udon doc page https://docs.vrchat.com/docs/getting-started-with-udon this has basic installation instructions for Udon.
55-
2. Install the latest version of the VRCSDK3 linked on the getting started.
56-
3. Get the latest release of UdonSharp from [here](https://github.com/Merlin-san/UdonSharp/releases/latest) and install it to your project.
57-
58-
### Getting started
59-
1. Make a new object in your scene
60-
2. Add an `Udon Behaviour` component to your object
61-
3. Below the "New Program" button click the dropdown and select "Udon C# Program Asset"
62-
4. Now click the New Program button, this will create a new UdonSharp program asset for you
63-
5. Click the Create Script button and choose a save destination and name for the script.
64-
6. This will create a template script that's ready for you to start working on, open the script in your editor of choice and start programming
65-
66-
#### Asset explorer asset creation
67-
68-
Instead of creating assets from an UdonBehaviour you can also do the following:
69-
1. Right-click in your project asset explorer
70-
2. Navigate to Create > U# script
71-
3. Click U# script, this will open a create file dialog
72-
4. Choose a name for your script and click Save
73-
5. This will create a .cs script file and an UdonSharp program asset that's set up for the script in the same directory
74-
75-
### Example scripts
76-
77-
#### The rotating cube demo
78-
79-
This rotates the object that it's attached to by 90 degrees every second
80-
81-
```cs
82-
using UnityEngine;
83-
using UdonSharp;
84-
85-
public class RotatingCubeBehaviour : UdonSharpBehaviour
86-
{
87-
private void Update()
88-
{
89-
transform.Rotate(Vector3.up, 90f * Time.deltaTime);
90-
}
91-
}
92-
```
93-
94-
#### Other examples
95-
96-
For more example scripts take a look at the wiki page for [examples](https://github.com/Merlin-san/UdonSharp/wiki/examples), the Examples folder included with U#, or the [community resources](https://github.com/Merlin-san/UdonSharp/wiki/community-resources) page on the wiki.
97-
98-
## Credits
99-
[**Toocanzs**](https://github.com/Toocanzs) - Implementing field initializers and helping with miscellaneous things
100-
101-
[**PhaxeNor**](https://github.com/PhaxeNor) - Help with wiki and documentation
102-
103-
[**bd_**](https://github.com/bdunderscore) - Significant optimizations to compiled code
104-
105-
[**mika-f**](https://github.com/mika-f/) - Implementation of user defined property support
106-
107-
[**UdonPie Compiler**](https://github.com/zz-roba/UdonPieCompiler) - For demonstrating how straightforward it can be to write a compiler for Udon
108-
109-
## Links
110-
[![Discord](https://img.shields.io/badge/Discord-My%20Discord%20Server-blueviolet?logo=discord)](https://discord.gg/Ub2n8ZA) - For support and bug reports
111-
112-
<a href="https://www.patreon.com/MerlinVR"><img src="https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fmerlin-patreon.herokuapp.com%2FMerlinVR" alt="Patreon donate button" /> </a> - Support the development of UdonSharp
5+
Please do not make new issues or pull requests on this repository.

0 commit comments

Comments
 (0)