April 2014
"Wang Nan's answer (37 votes)":
Why get started is simple, look at the official website of the documentation and video tutorials to know, after watching a few videos and examples can let beginners make things to play, other similar business engines do not. The structure of the object + component, the WYSIWYG editing method, reduces the beginner's threshold to a minimum.
Besides, the embodiment of difficult mastery. In fact any business engine that can be used to make a big, cool cock game is hard to master, and this is determined by the engine's functional depth and usability. An engine that integrates countless commercial middleware, including animation system, GUI, lighting system, pathfinding, physics and other parts, any part of the individual can be taken out by the user's heart to grasp. From this point of view, unity and unreal are basically the same.
So what are the pits peculiar to unity?
1. Script Execution Order: Monobehavior is at the heart of the unity component system, leaving all the easy-to-start and efficient development features out of this class. But sequential control of the execution of multiple component scripts is always a headache. Users who do not understand this can easily get bogged down in a variety of hidden bugs.
2. The component-type functional structure gives everyone greater control, but not a good distinction between the responsibilities of different members of the team. Unity allows each developer to see the script source code and modify it when needed, compared to Unreal's approach to dividing the programming into c++,unrealscript and Kismet three layers. It is very convenient for lone wolf developers, but if a game logic can be affected by scripting, prefab parameter configuration and scene reference, the maintenance is very messy, the problem is difficult to distinguish the first time responsibility.
3. The efficiency problems caused by memory allocation and garbage collection are difficult for beginners to understand. An important feature of unity is that it intentionally hides a lot of complex usage methods in order to have a wider audience for the entire engine. Automatic garbage collection, for example, is designed to make it accessible to users who do not understand memory allocation. But soon the user will find that a lot of runtime garbage collection caused by slow, so that become a must-have trap. If you can tell users which operations will allocate memory in official documents, the situation will improve a lot.
4. The function iteration pushes the new quickly, causes the massive immature imperfect work flow. This is hardly a drawback, after all, the first time to use the cool new features for many users is very good, of course, if you are the technical leader of the Business project should be careful. In general, the official launch of the feature is at least a year after the stability and applicability will be more than the same third-party plug-in asset store.
In general, these problems are not fatal due to excellent scalability. There are always people making good tools to compensate for the shortcomings of this engine. And with its invincible ease of use, unity's overall technical direction is very successful.
"Michael Dunne's answer (13 votes)":
Unity Starter Easy:
1. A script component on the render object can drive the logic of the object, and the Monobehaviour-based script sets the interface for initialization (awake, Start), update (update, fixedupdate) to be left. Beginners do not have to consider the procedural framework of a class of problems, the right to fill in the blanks. It's much like the feeling of early flash games.
2, the editor is very powerful, WYSIWYG editing mode, can be paused at any time, single-frame execution of game logic, provide scenes and games in real-time debugging of multiple windows, observe the effect. The current values of all variables can be seen in real time on the script palette, which is handy for debugging game logic.
3, 3D engine function is perfect, with our self-developed 5, 6 years of 3D engine compared, or far flung us a large section, in addition to support the front and back to a variety of rendering pipelines, a variety of post-rendering effects, but also built-in beast-based Lightmap baking, Umbra-based occlusion culling these commercial middleware, To know that the single procurement of these middleware is good hundreds of thousands of RMB, so it is a 3D novice, to do a cool 3D effect is not very difficult. Although the rendering effect may be less than unreal,cry, but u3d this thing in China, even if it is free, and then use U3D Basic is to send mobile platform, the current 3D effect is enough.
4, the game other aspects of the components are also very rich, based on Phyx physical system, you have to do something crazy birds, cut rope and other games, it is very easy. There is also a Navmesh-based navigation system, music sound system (for the sound of Fmod's former developers) and so on.
5, a good developer community ecosystem. Unity's most NB is the building of a asset Store, where unity developers around the world sell their own code, components, art resources, and share experiences. Therefore, the cost of learning is greatly reduced.
6, one click to publish to various platforms, including iOS, Andriod, WP, webpage, Windows, Mac, etc., if not to access other platform-related libraries (such as internal purchase, etc.), almost completely without learning platform-related programming knowledge (OBJECT-C, Java, etc.)
7, as a proof of unity easy to get an example, I just began to learn unity, with 1.5 months of spare time, made a push coin games, put on the AppStore, one months basically can receive a thousands of yuan. Give me a link, not an ad, just a description of what you can do with unity in your spare time for the next 1.5 months: "Clown Circus" in ITunes App Store
--------------------------------------------------------------------------------------------------------------- -----------------
Unity Mastery is difficult:
1, based on the Monobehaviour script, too handy there will be a lot of architectural risk, you can not help the A component reference B components, B components and reference a component .... The project was written in a large mess. Of course, other languages have this problem with other engines, but some of unity's features must be used with the Monobehaviour class, so designing a robust MVC architecture requires a lot of temptation and a bit of cornering.
2, based on the Monobehaviour script, the initialization sequence of components can not be clear, the pit also has a reply mentioned.
3, the underlying code is not open source, especially the asset store to sell things that help developers also used to get a DLL encapsulation, therefore, some of the underlying modification needs can not be changed, sometimes very headache.
4, C # GC problem, this can not be said Unity's fault, C + + developers will be in long-term work to become memory-sensitive, and C # developers will be much weaker, but the game happens to be a memory-sensitive application. As a result, developers need to be very sensitive to C # memory allocation, otherwise there will be frequent GC-induced card phenomenon. In particular, it is important to note the small memory allocations at each frame update. Use Unity's own memory and performance analysis tools in this area.
5, Unity3d after all is a 3D engine, 3D graphics knowledge after all the threshold is very high, to do a project in depth, need to understand the 3D knowledge is very deep, so in the development of some large projects, novice often for 3D of various needs and problems, if unity official did not, or asset It's tricky to find it in the store.
6, the biggest pit! iOS publishing encountered a runtime exception related to AOT compilation. Simply put, Unity uses mono for C # cross-platform compilation, but in the iOS platform, Mono is running in full AOT mode and cannot use the JIT engine, and this exception is thrown. So often the situation is in the PC and andriod upstream play are very good, but the iOS platform will be off when running! For specific restrictions, please refer to:/httpdocs.xamarin.com/guides/ios/advanced_topics/limitations/#. NET.c2.a0API.c2.a0Limitations
7, as proof unity proficient difficult example, Division I cross-era cool international masterpiece second kill AppStore before 20 unity project, did about 8 months, it is estimated to come out also have a small 1 years ....
"User's answer (2 votes)":
It is easy to get started because of its programming script (very object), which is the core. Then outside of this core, the price factor attracts a lot of developers and companies. Coupled with its plug-in technology to form a good ecological environment, so learning data than other engines more than a lot of two words can be said clear. These all form the threshold for entry is very low.
Mastery is difficult because the 3D itself, rather than unity, is the tool.
The game engine Unity is easy to master the beginning of the difficult to show where? Why?