What's new in Unity?

Unity 5.4: Nye Funktioner og Opgraderingsvejledning

15/06/2025

Rating: 4.81 (10951 votes)

Unity 5.4: En Dybdegående Gennemgang af Nye Funktioner og Opgraderingsdetaljer

Unity 5.4 repræsenterer et betydeligt spring fremad for spiludviklere, der bringer en række nye funktioner, forbedringer og vigtige ændringer til platformen. Denne opdatering fokuserer på at optimere ydelsen, udvide grafiske muligheder og strømline udviklingsprocessen. For dem, der opgraderer eksisterende projekter fra tidligere versioner, er det afgørende at forstå disse ændringer for at sikre en problemfri overgang. Denne artikel vil udforske de mest markante nye funktioner, dykke ned i API-ændringer, shader-opdateringer og give vejledning til opgradering fra Unity 5.3.

How do I install Unity engine?
Windows, Mac Intel, Mac ARM64, or Linux. Once your download and install has completed, open the Hub and login or create a Unity account. In the Hub, start a tutorial or open a new project. The latest version of the Unity Engine will download automatically. Graphics card with DX10 (Shader Model 4.0) capabilities.
Indholdsfortegnelse

Nye Funktioner i Unity 5.4

Unity 5.4 introducerede flere banebrydende funktioner designet til at forbedre både visuel kvalitet og udviklingseffektivitet.

Light Probe Proxy Volumes

En af de mest bemærkelsesværdige tilføjelser er Light Probe Proxy Volumes. Denne funktion giver udviklere mulighed for at udnytte mere detaljeret lysinformation på tværs af overfladen af store dynamiske objekter. Dynamiske objekter, som typisk ikke kan bruge baked lightmaps, kan nu blive belyst forskelligt i forskellige områder af deres overflade, baseret på placeringen af flere light probes inden for et afgrænset volumen. Dette resulterer i mere realistisk og nuanceret belysning af komplekse, bevægelige genstande i spilmiljøer.

GPU Instancing Support

GPU Instancing Support er en yderst optimeret metode til at tegne store mængder identiske modeller. Ved at udnytte GPU'ens hardware kan modeller, der deler samme materiale og mesh, instansieres. Dette reducerer markant antallet af draw calls, hvilket fører til en mærkbar forbedring af renderingens ydeevne, især i scener med mange ensartede objekter som f.eks. træer, græs eller fjender.

Texture Array Support

Med introduktionen af Texture Array Support, en funktion der stammer fra Direct3D 10, OpenGL 3, OpenGL ES 3 og lignende moderne platforme, kan udviklere nu samle en samling af 2D-teksturer, der alle har samme størrelse og format. Disse teksturer behandles som et enkelt objekt af GPU'en og kan samples i shaders ved hjælp af en tekstur-elementindeks. Brugen af tekstur-arrays giver en potentiel ydelsesforbedring sammenlignet med at håndtere flere individuelle teksturer.

Fast Graphics CopyTexture

Unity 5.4 introducerer også en ny, hurtigere metode til at kopiere teksturinformation fra en tekstur til en anden med Fast Graphics CopyTexture. Dette kan være særligt nyttigt i grafikintensive applikationer, hvor hyppig teksturmanipulation er nødvendig.

What's new in Unity XAML & Windows Phone 10?
Windows Store: SystemInfo.deviceType will now correctly report Handheld when running on Windows Phone 10. Windows Store: Unity will no longer report XboxOne controllers as Xbox 360 controllers. Windows Store: Unity will no longer steal key events when another XAML element (e.g. TextBox) is in focus.

Particle Trigger Module

Partikelsystemer har fået en væsentlig opgradering med Particle Trigger Module. Dette modul giver partikelsystemer evnen til at udløse en callback-funktion, når de interagerer med en eller flere Trigger Colliders i scenen. En callback kan aktiveres, når en partikel indtræder eller forlader en Collider, eller mens en partikel befinder sig inden for eller uden for Collideren. Ydermere introduceres en ikke-uniform skaleringsmulighed for partikler, der tillader separate bredde- og højdeværdier.

API- og Shader-ændringer

Opgradering til Unity 5.4 medfører også ændringer i eksisterende API'er og shaders, som udviklere skal være opmærksomme på.

Networking: Multiplayer Service API ændringer

Der er foretaget adskillige ændringer i Multiplayer Service API. Disse ændringer kan påvirke projekter, der benytter Unitys netværksfunktioner til multiplayer-spil.

Networking: WebRequest er ikke længere eksperimentel

WebRequest-interfacet er blevet promoveret fra UnityEngine.Experimental.Networking til UnityEngine.Networking. Projekter, der bruger UnityWebRequest, skal opdateres for at afspejle denne ændring.

Scene View: Tone mapping ikke automatisk anvendt

Effekter med attributten ImageEffectTransformsToLDR anvendes ikke længere automatisk på Scene View. En ny attribut, ImageEffectAllowedInSceneView, er introduceret for effekter, der skal anvendes i Scene View. Standard Assets i 5.4 er blevet opdateret for at reflektere denne ændring.

Shaders: Omdøbte variabler

En række indbyggede shader-variabler er blevet omdøbt for at sikre konsistens:

  • _Object2World og _World2Object er nu unity_ObjectToWorld og unity_WorldToObject.
  • Variabler relateret til skygger og lysmatricer er blevet præfiks med unity_ for at give en mere ensartet navngivning.

Variabelreferencer omdøbes automatisk i .shader- og .cginc-filer ved import. Det er dog vigtigt at bemærke, at shaders, der er blevet omdøbt, ikke vil være kompatible med Unity 5.3 eller tidligere versioner uden manuel omdøbning.

What version of unity is available for iPhone?
Additionally, the archive includes the initial versions of the editor designed to build for iPhone, along with the available built-in shaders. The following table catalogues all editor versions leading up to 4.7.2, which marked the final release for Unity 4.

Shaders: Uniform Arrays

Håndteringen af arrays af shader-egenskaber er ændret. Der er nu "native" understøttelse for float/vector/matrix arrays i shaders via nye API'er som MaterialPropertyBlock.SetFloatArray og Shader.SetGlobalFloatArray. Disse nye API'er tillader arrays op til 1.023 elementer. Den gamle metode med nummer-suffiksnavne (f.eks. _Colors0, _Colors1) er deprecated.

Shaders: Diverse ændringer i 5.4

  • Standard shader-kompileringstarget er ændret til "#pragma target 2.5".
  • Material(string) konstruktøren er deprecated og vil udskrive en fejl, hvis den bruges.
  • Den interne shader til beregning af screen-space directional light shadows er flyttet til Graphics-indstillingerne. Hvis du bruger en tilpasset version, skal du vælge din brugerdefinerede shader under Edit > Project Settings > Graphics.
  • Reflection probes deler en sampler mellem to teksturer. Hvis du sampler dem manuelt i din shader, kan du opleve en "undeclared identifier samplerunity_SpecCube1" fejl, som kræver en kodeændring.
  • UnityEditor.ShaderUtil.ShaderPropertyTexDim er deprecated; brug Texture.dimension i stedet.

ComputeBuffers

Datalayoutet for ComputeBuffers i automatisk konverterede OpenGL-shaders er ændret for at matche DirectX ComputeBuffers. Hvis du bruger ComputeBuffers i OpenGL, skal du fjerne kode, der tilpasser data til tidligere OpenGL-specifikke layoutregler.

Playables: Migration til 5.4

Playables, en API til at organisere og evaluere datakilder i en træstruktur, har gennemgået betydelige ændringer:

  • Playables er nu structs i stedet for klasser, hvilket forbedrer ydeevnen ved at undgå boxing/unboxing.
  • Playable structs er handles til native Playable klasser.
  • En ikke-null Playable struct garanterer ikke, at Playable er brugbar; brug .IsValid metoden til at verificere.
  • Metoder, der tidligere returnerede null for tomme inputs/outputs, returnerer nu Playable.Null.
  • Playable.Null er en ugyldig Playable og kan bruges til at reservere tomme inputs eller implicit afbryde tilsluttede inputs.
  • Sammenligning af Playables med null er meningsløs; sammenlign med Playable.Null.
  • Playables skal allokeres ved hjælp af den statiske Create metode og deallokeres ved hjælp af .Destroy metoden. Manglende deallokering vil medføre hukommelseslækager.
  • ScriptPlayable er erstattet af CustomAnimationPlayables.
  • Det er ikke længere muligt at arve fra base Playables; aggreger Playables i dine brugerdefinerede Playables.

Oculus Rift: Opgradering fra Unity 5.3

Ved opgradering af Oculus VR-projekter fra Unity 5.3, følg disse trin:

  1. Genaktiver virtual reality-understøttelse: Gå til Edit > Project Settings > Player, vælg Other Settings og marker afkrydsningsfeltet Virtual Reality Supported. Brug listen Virtual Reality SDK til at tilføje eller fjerne enheder.
  2. Fjern Oculus Spatializer: Gå til Edit > Project Settings > Audio og fjern Oculus Spatializer Audio Plugin fra dropdown-menuen for Spatializer Plugin. Dette kan forhindre konflikter og byggefejl.

Reordering Siblings og Runtime Hierarkier

Ændringer i Sibling Reordering

I Unity 5.4 er der foretaget en ændring i de events, der udløses, når sibling GameObjects omordnes. Tidligere modtog alle søskende en OnTransformParentChanged kald, når rækkefølgen blev ændret. I 5.4 modtager søskende ikke længere dette kald; i stedet modtager forældre-GameObjectet et enkelt kald til OnTransformChildrenChanged. Hvis dit projekt er afhængigt af den tidligere adfærd, skal du opdatere din kode til at reagere på OnTransformChildrenChanged på forældreobjektet.

Rearranging Store GameObject Hierarchier ved Runtime

På grund af optimeringer i Transform-komponenten kan det nu tage længere tid at omarrangere hierarkier med 1000+ GameObjects ved hjælp af Transform.SetParent eller ved at destruere dele af hierarkiet. Det anbefales at undgå at omarrangere sådanne store hierarkier ved runtime.

Windows Store og Script Serialization

Windows Store

Det genererede Visual Studio-projektformat er blevet opdateret for alle .NET scripting backend SDK'er. Dette løser problemer med overdreven genopbygning, når intet er ændret i det genererede projekt. Du skal muligvis slette eksisterende genererede *.csproj-filer, især hvis de blev bygget med "Generate C# projects" valgt, så Unity kan regenerere dem.

What's new in Unity 5.4?

Script Serialization Fejl

Der er introduceret to nye fejlmeddelelser for script serialization, som fanger kald til Unity API fra konstruktører og feltinitialisatorer under deserialisering (loading). Da deserialisering kan ske på en anden tråd end hovedtråden, er det ikke sikkert at kalde Unity API'er under denne proces.

Understøttelse af Retina Skærme

Unity-editoren understøtter nu Retina-opløsninger på Mac OS X med højopløst tekst, UI og 3D-visninger. Editorens GUI er nu defineret i punkt-rum i stedet for pixel-rum. På standardopløsningsskærme er der ingen ændring, men på Retina-skærme er hvert punkt to pixels. Den aktuelle skærm til UI-skalering er tilgængelig via EditorGUIUtility.pixelsPerPoint. Hvis din editorkode bruger standard Editor/GUI/Layout metoder, kræves der sandsynligvis ingen ændringer. Hvis du bruger Screen.width/height, skal du skifte til EditorWindow.position.width/height. For brugerdefinerede editorer i Inspector, brug EditorGUIUtility.currentViewWidth. Hvis du viser andet indhold i din UI, som f.eks. en RenderTexture, skal du muligvis konvertere dine punktstørrelser til pixelstørrelser ved hjælp af nye metoder i EditorGUIUtility. For GUIStyles med brugerdefinerede baggrunde kan du tilføje Retina-versioner af baggrundsteksturer ved at placere en tekstur med præcis fordoblede dimensioner i et GUIStyleState.scaledBackgrounds array. Macs med mindre kraftfuld grafikhardware kan opleve langsomme editor-framerater i 3D-visninger på grund af den øgede opløsning. Retina-understøttelse kan deaktiveres ved at vælge "Get Info" på Unity.app i Finder og markere "Open in Low Resolution".

Fysik: Meshes og Transform Drift

Der er foretaget ændringer for at forhindre physics meshes indeholdende ugyldige (ikke-endelige) vertices. Desuden er der foretaget ændringer for at undgå physics transform drift ved ikke at sende redundante transform-opdateringer. I 5.3 sendte animationssystemet altid transform-opdateringsmeddelelser for konstante animationskurver, hvilket vækkede Rigidbodies. I 5.4 vækkes Rigidbodies ikke, hvis der ikke er positionændringer. Hvis dit projekt er afhængigt af den tidligere adfærd, skal det muligvis justeres.

Web Player

Unity Web Player-platformen er blevet fjernet i Unity 5.4. Projekter, der opgraderes til 5.4, kan ikke længere deployeres til Web Player. Hvis du har ældre Web Player-projekter, der skal vedligeholdes, bør du undlade at opgradere dem til 5.4 eller nyere.

Tabel: Vigtigste Ændringer i Unity 5.4

Funktion/OmrådeÆndring i Unity 5.4Implikation for Udviklere
Light Probe Proxy VolumesNy funktion for forbedret dynamisk belysningMere realistisk belysning af komplekse objekter
GPU InstancingOptimeret tegning af identiske objekterForbedret ydeevne i scener med mange ens objekter
Texture ArraysSamling af teksturer i ét objektPotentiel ydelsesforbedring og simplificeret teksturhåndtering
Networking APIÆndringer i Multiplayer Service APIKræver muligvis opdatering af netværkskode
WebRequestPromoveret fra ExperimentalOpdatering af referencer nødvendig
Tone Mapping i Scene ViewIkke længere automatisk anvendtKræver brug af ImageEffectAllowedInSceneView
Shader VariablerOmdøbning for konsistensKræver opdatering af shader-kode, inkompatibel med 5.3 uden manuel omdøbning
Uniform ArraysNative support, gamle metoder deprecatedBrug nye API'er for bedre ydeevne og kompatibilitet
PlayablesStructs i stedet for klasser, ændret APIKræver migration af eksisterende Playable-kode
Oculus RiftÆndringer i integration og indstillingerFølg opgraderingsvejledningen for VR-projekter
Sibling ReorderingÆndret event-udløsning (OnTransformChildrenChanged)Opdater kode, der reagerer på OnTransformParentChanged for søskende
Web PlayerFjernetIkke egnet til projekter, der kræver Web Player deployment

Ofte Stillede Spørgsmål

Q: Hvad er de vigtigste nye funktioner i Unity 5.4?
A: De vigtigste nye funktioner inkluderer Light Probe Proxy Volumes, GPU Instancing Support, Texture Array Support og Particle Trigger Module.

Q: Skal jeg opdatere min kode, hvis jeg opgraderer til Unity 5.4?
A: Ja, især hvis du bruger Networking API'er, WebRequest, eller har tilpassede shaders med specifikke variabelnavne. Playables API'et har også gennemgået betydelige ændringer, der kræver migration af din kode.

What's new in Unity 5.4?
In Unity 5.4, the way arrays of shader properties are handled has changed. Now there is “native” support for float/vector/matrix arrays in shaders (via MaterialPropertyBlock.SetFloatArray, Shader.SetGlobalFloatArray etc.). These new APIs allow arrays up to 1,023 elements.

Q: Kan jeg stadig deploye til Web Player med Unity 5.4?
A: Nej, Unity Web Player-målet er fjernet i Unity 5.4. Du skal bruge alternativer som WebGL.

Q: Hvordan påvirker Retina-understøttelsen min editor-oplevelse?
A: Editoren vil vise skarpere tekst og UI på Retina-skærme. Hvis du udvikler brugerdefinerede editor-vinduer eller bruger skæmstørrelser i pixels, skal du muligvis foretage justeringer for at udnytte den nye punkt-baserede skalering korrekt.

Q: Hvad skal jeg gøre, hvis mit projekt er afhængigt af den gamle OnTransformParentChanged adfærd for søskende?
A: Du skal ændre din kode til at lytte efter OnTransformChildrenChanged på forældre-GameObjectet i stedet.

Q: Er der ændringer i fysiksystemet, der kan påvirke mit spil?
A: Ja, der er ændringer for at håndtere ugyldige vertices i physics meshes og for at undgå transform drift. Hvis dit spil er stærkt afhængigt af, at Rigidbodies altid vækkes, kan du opleve ændringer i adfærd.

Unity 5.4 tilbyder en robust pakke af nye funktioner og forbedringer, der kan løfte dine spilprojekter. En grundig forståelse af de nævnte ændringer og en omhyggelig opgraderingsproces vil sikre, at du fuldt ud kan udnytte platformens potentiale.

Hvis du vil læse andre artikler, der ligner Unity 5.4: Nye Funktioner og Opgraderingsvejledning, kan du besøge kategorien Software.

Go up