neuecc / UniRx

Reactive Extensions for Unity
MIT License
7.06k stars 893 forks source link

Split dependencies on Unity3d UPM #340

Open NoxMortem opened 6 years ago

NoxMortem commented 6 years ago

With the unity package manager it is possible to disable large parts of the dependencies on unity modules. However, UniRx currently requires a lot of modification when removing unity packages. In particular:

Please try to structure the Extension methods and triggers in a way, that makes it easier to remove those parts of UniRx when removing those packages from a project.

I guess this won't be urgent, as it will take quite some time until sufficient people pick up those UPM features, but I guess it makes sense to begin as early as possible to take this into consideration.

Unity clearly needs to make it easier to work with stripped projects. There are no scripting defines as far as I know to know if a (official) upm package is enabled or not...

neuecc commented 6 years ago

Sure. It is a bit difficult to separate methods but maybe I can use ENABLE_WWW or others.

eXponenta commented 5 years ago

Same problem. My app use UniRx becouse has large UI composition, but currently it use TextmeshPro only. Animation module is largest, but UniRx require it (same as WebRequests, Physics2D, AssetBundle, Audio)

Nezz commented 5 years ago

I just came across this and I'd like to point out that defines like ENABLE_WWW are still there even if it's disabled from Package Manager as of Unity 2018.3.6f1. It will result in compiler errors like these:

The type name 'WWW' could not be found in the namespace 'UnityEngine'. This type has been forwarded to assembly 'UnityEngine.UnityWebRequestWWWModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' Enable the built in package 'Asset Bundle', which is required by package 'Unity Web Request WWW', in the Package Manager window to fix this error.
error CS1069: Assets/UniRx/Async/UnityAsyncExtensions.cs(68,48)
quabug commented 4 years ago

It is not just help game developer but also help plugin developer who wish to write plugin base on UniRx since UPM has dependency resolution which makes writing plugin based on UniRx easier.