тЖТ
рдИрд╕реАрдПрд╕ рдХреНрдпрд╛ рд╣реИтЖТ
рдЕрднрд┐рдиреЗрддрд╛ рдХреНрдпрд╛ рд╣реИрдореИрдВрдиреЗ рдЕрдХреНрд╕рд░ рд╕реБрдирд╛ рд╣реИ рдХрд┐
рдИрд╕реАрдПрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░
рдпреВрдирд┐рдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ
рдЬреЙрдмреНрд╕ рдФрд░
рдмрд░реНрд╕реНрдЯ рд╕рднреА рдкреНрд░рджрд░реНрд╢рди рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рд╣рд░ рдмрд╛рд░ рдХреЛрдб рдХреА рдЧрддрд┐ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реБрдП "рд╢рд╛рдпрдж" рдФрд░ "рд╢рд╛рдпрдж" рд╢рдмреНрдж рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдпрд╣ рдЦреБрд▓реЗ рджрд┐рдорд╛рдЧ рдмрдирд╛рдирд╛ рдерд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг рдХрд┐рддрдирд╛ рддреЗрдЬ рд╣реИ рдФрд░ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирд╛рдВрддрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдФрд░ рдЕрдЧрд░ рд╣реИ, рддреЛ рдХреНрдпрд╛
рдпреВрдирд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдЬреЙрдмреНрд╕ рдпрд╛
рд╕рд┐рд╕реНрдЯрдоред рдереНрд░реЗрдбрд┐рдВрдЧ ? рдЙрд╕реА рд╕рдордп рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ
рдИрд╕реАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдХреА рд╕реНрдерд┐рддрд┐ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЦреЗрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд░реАрдм):- I5 2500 рдкреНрд░реЛрд╕реЗрд╕рд░ (рд╣рд╛рдЗрдкрд░ рдЯреНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ 4 рдХреЛрд░) рдФрд░ рдпреВрдирд┐рдЯреА2019.3.0f1
- рд╣рд░ GameObject рд╣рд░ рдлреНрд░реЗрдо ...
A) рдкреНрд░рд╛рд░рдВрдн рдмрд┐рдВрджреБ рд╕реЗ рдЕрдВрдд рддрдХ 10 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рджреНрд╡рд┐рдШрд╛рддреАрдп рдмреЗрдЬрд╝рд┐рдпрд░ рд╡рдХреНрд░ рдХреЗ рд╕рд╛рде рдЪрд▓рддрд╛ рд╣реИред
рдмреА) рдЗрд╕рдХреЗ рд╡рд░реНрдЧ рдХреЛрд▓рд╛рдЗрдбрд░ (рдмреЙрдХреНрд╕ 10f10f) рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ math.sincos, math.asin, math.sqrt (рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди, рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
- рдПрдлрдкреАрдПрд╕ рдорд╛рдк рд╕реЗ рдкрд╣рд▓реЗ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ 720fx1280f рдХреНрд╖реЗрддреНрд░ рдХреЗ рднреАрддрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд┐рдВрджреБ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред
- рдкреАрд╕реА рдкрд░ IL2CPP рдореЗрдВ рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдкрд░ рд╕рдм рдХреБрдЫ рдкрд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рд▓реЙрдиреНрдЪ рдХреЗ рдХреБрдЫ рд╕реЗрдХрдВрдб рдмрд╛рдж рдЯреЗрд╕реНрдЯ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧрдгрдирд╛ рдФрд░ рдПрдХрддрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рдПрдлрдкреАрдПрд╕ рдкреНрд░рднрд╛рд╡рд┐рдд рди рд╣реЛред рд╕рдорд╛рди рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реНрд░реЗрдо рдХрд╛ рдХреЗрд╡рд▓ рдЕрдкрдбреЗрдЯ рдХреЛрдб рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдПрдлрдкреАрдПрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рди рдХрд░реЗрдВред
рдкрд░реАрдХреНрд╖рдг рдкрджреЛрдВ рдФрд░ рдЕрджреНрдпрддрди рдХреЛрдб
- рдореЛрдиреЛрдмреАрд╣реМрд░ рд╕реАрдХреНрд╡реЗрдВрд╢рд┐рдпрд▓ (рд╕рд╢рд░реНрдд рдЕрдВрдХрди)ред
MonoBehaviour рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ "рддреНрд░рд┐рд╢рдВрдХреБ" рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдкрдбреЗрдЯ рдореЗрдВ рд╕реНрдерд┐рддрд┐, рдХреЛрд▓рд╛рдЗрдбрд░ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рд╕реНрд╡рдпрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдкрдбреЗрдЯ рдХреЛрдб - рдЕрднрд┐рдиреЗрддрд╛ рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рдШрдЯрдХ рд╡рд░реНрдЧреЛрдВ рдкрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ ред
рдЕрдкрдбреЗрдЯ рдХреЛрдб public void Tick(float delta) { foreach (ent entity in groupMoveBezier) { var cMoveBezier = entity.ComponentMoveBezier_noJob(); var cObject = entity.ComponentObject(); ref var obj = ref cObject.obj;
- рдЕрднрд┐рдиреЗрддрд╛ + рдиреМрдХрд░рд┐рдпрд╛рдВ + рдлрдЯ
рдпреВрдирд┐рдЯреА рд╕реЗ рдЬреЙрдмреНрд╕ рдХреА рдЧрдгрдирд╛ рдФрд░ рдЖрдВрджреЛрд▓рдиред рдЬреЙрдмреНрд╕ 0.1.1, рдпреВрдирд┐рдЯреАредрдмрд░реНрд╕реНрдЯ 1.1.2 рд▓рд╛рдЗрдмреНрд░реЗрд░реАред
рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪ - рдмрдВрдж
рд╕рдВрдкрд╛рджрдХ рд╕рдВрд▓рдЧреНрди - рдмрдВрдж
рдЬреЙрдмреНрд╕рдбреЗрдмрдЧрд░ - рдСрдл
IJobParallelForTransform рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рд╕рднреА рдЪрд▓рддреА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдПрдХ "рдореВрд▓ рд╡рд╕реНрддреБ" рд╣реЛрддреА рд╣реИ (рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддреНрдпреЗрдХ "рдореВрд▓" рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ 255 рдЯреБрдХрдбрд╝реЗ рддрдХ)ред
рдЕрдкрдбреЗрдЯ рдХреЛрдб public void Tick(float delta) { if (index <= 0) return; handlePositionUpdate.Complete(); #if UNITY_EDITOR for (var i = 0; i < index; i++) { var obj = nObj[i]; DebugDrowBox(obj.collBox, Color.blue, Time.deltaTime); } #endif jobPositionUpdate.nSetMove = nSetMove; jobPositionUpdate.nObj = nObj; jobPositionUpdate.deltaTime = delta; handlePositionUpdate = jobPositionUpdate.Schedule(transformsAccessArray); } } [BurstCompile] struct JobPositionUpdate : IJobParallelForTransform { public NativeArray<SetMove> nSetMove; public NativeArray<Obj> nObj; [Unity.Collections.ReadOnly] public float deltaTime; public void Execute(int index, TransformAccess transform) { var setMove = nSetMove[index]; var velocityToOneFrame = nSetMove[index].velocityToOneSecond * deltaTime; // setMove.observedDistance += velocityToOneFrame; var t = setMove.observedDistance / setMove.distanceFull; if (t > 1f) t = 1f; var newPos = t.CalculateBesierPos(setMove.posToMove.c0, setMove.posToMove.c2,setMove.posToMove.c1); nSetMove[index] = setMove; // var obj = nObj[index]; obj.properties.c0 = newPos; var posAndSize = new float2x2 { c0 = newPos, c1 = obj.collBox.posAndSize.c1 }; obj.collBox = obj.entity.NewCollBox(posAndSize, new float2(10f, 10f), obj.rotation.ToEulerAnglesZ()); nObj[index] = obj; // transform.position = (Vector2) newPos; } } public struct SetMove { public float2x3 posToMove; public float distanceFull; public float velocityToOneSecond; public float observedDistance; }
- рдЕрднрд┐рдиреЗрддрд╛ + рд╕рдорд╛рдирд╛рдВрддрд░
рд╕рд╛рдорд╛рдиреНрдп рдХреЗ рдмрдЬрд╛рдп рдЪрд▓рддреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХреЗ рд▓рд┐рдП, Parallel.For рдХрд╛ рдЙрдкрдпреЛрдЧ System.Threading.Tasks рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рдирдИ рд╕реНрдерд┐рддрд┐ рдФрд░ рдХреЛрд▓рд╛рдЗрдбрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓реЗ рдЬрд╛рдирд╛ рдкрдбрд╝реЛрд╕реА рд╕рдореВрд╣ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдкрдбреЗрдЯ рдХреЛрдб public void Tick(float delta) { Parallel.For(0, groupMoveBezier.length, i => { ref var entity = ref groupMoveBezier[i]; var cMoveBezier = entity.ComponentMoveBezier_actorsParallel(); ref var obj = ref entity.ComponentObject().obj;
рдЪрд▓рддреА рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг [1]:
500 рд╡рд╕реНрддреБрдУрдВ
(рдПрдлрдкреАрдПрд╕ рдХреЗ рд╕рд╛рде рдкрд╛рда рдХреЗ рдкрд╛рд╕ рд╕рдВрдкрд╛рджрдХ рдХреА рдПрдХ рддрд╕реНрд╡реАрд░ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ)- рдореЛрдиреЛрдмреЗрд╣рд╛рд╡реЛрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ:

- рдЕрднрд┐рдиреЗрддрд╛ рдЕрдиреБрдХреНрд░рдорд┐рдХ:

- рдЕрднрд┐рдиреЗрддрд╛ + рдиреМрдХрд░рд┐рдпрд╛рдВ + рдлрдЯ:

- рдЕрднрд┐рдиреЗрддрд╛ + рд╕рдорд╛рдирд╛рдВрддрд░ред

5000 рд╡рд╕реНрддреБрдУрдВ

- рдореЛрдиреЛрдмреЗрд╣рд╛рд╡реЛрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ:

- рдЕрднрд┐рдиреЗрддрд╛ рдЕрдиреБрдХреНрд░рдорд┐рдХ:

- рдЕрднрд┐рдиреЗрддрд╛ + рдиреМрдХрд░рд┐рдпрд╛рдВ + рдлрдЯ:

- рдЕрднрд┐рдиреЗрддрд╛ + рд╕рдорд╛рдирд╛рдВрддрд░ред

50,000 рд╡рд╕реНрддреБрдУрдВ

- рдореЛрдиреЛрдмреЗрд╣рд╛рд╡реЛрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ:

- рдЕрднрд┐рдиреЗрддрд╛ рдЕрдиреБрдХреНрд░рдорд┐рдХ:

- рдЕрднрд┐рдиреЗрддрд╛ + рдиреМрдХрд░рд┐рдпрд╛рдВ + рдлрдЯ:

- рдЕрднрд┐рдиреЗрддрд╛ + рд╕рдорд╛рдирд╛рдВрддрд░ред

рдПрдХреНрдЯрд░реНрд╕ + рдереНрд░реЗрдбреЗрдб (рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирд┐рд░реНрдорд┐рдд рдПрдХреНрдЯрд░реНрд╕ рд╕рдорд╛рдВрддрд░рд┐рдХрд░рдг)
рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдЦреЗрд▓ рдХреЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд▓реЗрдЦрди рдХреЛрдб рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдмрд╡рд╛рд╕реАрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рддрд╣рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рдмрдВрдзрд┐рдд рдвреЗрд░ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рдХрд╛рдо рдХреА рдЧрддрд┐ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЕрдкрдбреЗрдЯ рдХреЛрдб public void Tick(float delta) { groupMoveBezier.Execute(delta); for (int i = 0; i < groupMoveBezier.length; i++) { ref var cObject = ref groupMoveBezier.entities[i].ComponentObject(); cObject.tr.position = new Vector3(cObject.obj.properties.c0.x, cObject.obj.properties.c0.y, 0); #if UNITY_EDITOR DebugDrowBox(cObject.obj.collBox, Color.blue, Time.deltaTime); #endif } } static void HandleCalculation(SegmentGroup segment) { for (int i = segment.indexFrom; i < segment.indexTo; i++) { ref var entity = ref segment.source.entities[i]; ref var cMoveBezier = ref entity.ComponentMoveBezier(); ref var cObject = ref entity.ComponentObject(); ref var obj = ref cObject.obj; // var velocityToOneFrame = cMoveBezier.velocityToOneSecond * segment.delta; cMoveBezier.observedDistance += velocityToOneFrame; var t = cMoveBezier.observedDistance / cMoveBezier.distanceFull; if (t > 1f) t = 1f; var newPos = t.CalculateBesierPos(cMoveBezier.posToMove.c0, cMoveBezier.posToMove.c2, cMoveBezier.posToMove.c1); // obj.properties.c0 = newPos; var posAndSize = new float2x2 { c0 = newPos, c1 = obj.collBox.posAndSize.c1 }; obj.collBox = obj.entity.NewCollBox(posAndSize, new float2(10f, 10f), obj.rotation.ToEulerAnglesZ()); } }
рд╡рд░реНрдЧ рдШрдЯрдХреЛрдВ рдкрд░

рд╕рдВрд░рдЪрдирд╛ рдШрдЯрдХреЛрдВ рдкрд░

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдПрдлрдкреАрдПрд╕ рдкрд░ + 10% рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдШрдЯрдХ-рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ, рдФрд░ рджрд╕рд┐рдпреЛрдВ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдлрдкреАрдПрд╕ рдХреА рдЧреИрд░-рд░реИрдЦрд┐рдХ рд╡реГрджреНрдзрд┐ рдпрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐
рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ
рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
- рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЗ рдмрд┐рдирд╛ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдореЗрдВ рдПрдлрдкреАрдПрд╕ рд▓рдЧрднрдЧ рджреЛ рдЧреБрдирд╛ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде - рдореЛрдиреЛрдмреЗрд╣реИрд░реМрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреАрди рдЧреБрдирд╛ред рдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдпреЗ рдЕрдиреБрдкрд╛рдд рдмрдиреЗ рд╣реБрдП рд╣реИрдВред
- рдореЗрд░реЗ рд▓рд┐рдП, рдореЛрдиреЛрдмреАрд╣реМрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкрд░ рдИрд╕реАрдПрд╕ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЧрдгрдирд╛ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░, рдЧрддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░, рддрддреНрд╡ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
- MonoBehaviour рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ + рдиреМрдХрд░рд┐рдпреЛрдВ + рдлрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдлрдкреАрдПрд╕ рдХреЛ рд▓рдЧрднрдЧ рджрд╕ рдЧреБрдирд╛ рдмрдврд╝рд╛ рджреЗрддрд╛ рд╣реИ
- рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдлрдкреАрдПрд╕ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╡реГрджреНрдзрд┐ рдХрд╛рдлреА рд╣рдж рддрдХ рдмрд░реНрд╕реНрдЯ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпреВрдирд┐рдЯреА рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрдХреНрдЯрд░ 3 рдХреЛ рдЯреИрдЯреАрд▓ рд╕реЗ рдмрджрд▓реЗрдВ)
рдФрд░ рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рд╕реНрдХреНрд░реАрди рдкрд░ 50,000 рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдПрдлрдкреАрдПрд╕ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рдХреЛ
!
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЕрд╡рд╢реНрдп рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
1) рдпрджрд┐ рдЧрдгрдирд╛ рдореЗрдВ рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ (рд▓рд╛рд▓ рдорд╛рд░реНрдХрд░ - рдЦрд░рд╛рдм, рд╣рд░рд╛ - рдЕрдЪреНрдЫрд╛)

2) рдЖрдк рдЧрдгрд┐рдд рдЧрдгрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХреЗрд╡рд▓ рдЧрдгрд┐рдд, рдЕрдиреНрдпрдерд╛ рдлрдЯ рдбреЗрдЯрд╛ рдХреЛ рд╡реЗрдХреНрдЯрд░ рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

- рдХрдИ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, 50,000 рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдореЛрдиреЛрдмреЗрд╣рд┐рдпрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╣рд░ рдЬрдЧрд╣ рд╕рдорд╛рди ~ 50fps рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХреНрдЯрд░реНрд╕ + рдЬреЙрдмреНрд╕ рдпрд╛ рдереНрд░реЗрдбреЗрдб рдкрд░ рдХрд╛рдо рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реЛрдЧрд╛, рдЙрддрдирд╛ рд╣реА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рдХрд╛рдо рдХреЛ рдХрдИ "рдХрддрд╛рд░рдмрджреНрдз" рдиреМрдХрд░рд┐рдпреЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджреЗрдЧрд╛: рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛, рдХреЛрд▓рд╛рдЗрдбрд░, рдПрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рдирд╛ред
рдЖрдк рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрднрд┐рдиреЗрддрд╛ + рдЬреЙрдмреНрд╕ + рдмрд░реНрд╕реНрдЯ [рд╡рди рдЬреЙрдм] рдХреЗ рдХрд╛рдо рдХреА рддреБрд▓рдирд╛ рдПрдХреНрдЯрд░ + рдЬреЙрдмреНрд╕ + рдмрд░реНрд╕реНрдЯ [рдЪрд╛рд░ рдЬреЙрдм] рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (рд╣рд╛рдЗрдкрд░ рдЯреНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдореЗрд░реЗ рдЪрд╛рд░-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░, рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг 50,000 рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде -0.2ms рддреЗрдЬ рд╣реИ) - рдИрд╕реАрдПрд╕ рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рддрддреНрд╡реЛрдВ (рд░реЗрдВрдбрд░, рдПрдХрддрд╛ рднреМрддрд┐рдХреА, рдЖрджрд┐) рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред
[рез] рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдИрд╕реАрдПрд╕-рдпреВрдирд┐рдЯреА / рдбреЙрдЯреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдиреНрдп рдИрд╕реАрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣реИредрдкрд░реАрдХреНрд╖рдг рд╕реНрд░реЛрдд рдиреМрдХрд░рд┐рдпреЛрдВ рдкрд░ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдУрд▓реЗрдЧ рдореЛрд░реЛрдЬрд╝реЛрд╡ (рдмреЗрдВрдЬрд╛рдорд┐рдирдореЛрд░), рд╕реАрдирд╕реЗрд▓реЗрдХреНрдЯрд░ рдФрд░ рдПрдХ рдирдпрд╛ рдПрдлрдкреАрдПрд╕ рдХрд╛рдЙрдВрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдирд┐рд░реНрджреЗрд╢, рд╕рдВрд╢реЛрдзрди рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП iurii zakipnyi рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЕрднрд┐рдиреЗрддрд╛рдУрдВ + рдиреМрдХрд░рд┐рдпрд╛рдВ + рдлрдЯ [рдЪрд╛рд░ рдХрд╛рдо]