рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ - рдпреВрдирд┐рдЯреА 3 рдбреА
рдЬреАрдпреВрдЖрдИ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛рдПрдВ
, рдореИрдВрдиреЗ рдПрдХрддрд╛ рдпреВрдЖрдИ / рд░реЗрдХреНрдЯрдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдХрд┐рд╕реНрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЕрдм рдореИрдВ UI рдХреЗ рд▓рд┐рдП RectTransformUtility рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЬреЛ рдХреБрдЫ рдФрд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдпреВрдЖрдИ рдореЗрдВ рдХреБрдЫ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЙрдкрдХрд░рдг рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рд╕рд░рд▓ рдЪреБрдиреМрддреА
рдПрдХ рдХрд╛рд░реНрдп рд╣реИ - рдЖрдкрдХреЛ рдПрдХ рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдЪрдпрдирд┐рдд рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдкрд░реЗ UI рддрддреНрд╡ рдХреЛ рдПрдирд┐рдореЗрдЯреЗрдб рдХрд░рддрд╛ рд╣реИред рдШрдЯрдХ рдмреИрдВрдЧрдиреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд┐рдд рд╣реИ, рдПрдВрдХрд░ рдХрд┐рди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╣реИрдВ, рд╕реНрдХреНрд░реАрди рдХрд╛ рдЖрдХрд╛рд░ рдХреНрдпрд╛ рд╣реИ, рдФрд░ рд╕реНрдХреНрд░реАрди рдХрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдХреЛ 4 рдкрдХреНрд╖реЛрдВ (рдКрдкрд░, рдиреАрдЪреЗ, рдмрд╛рдПрдВ, рджрд╛рдПрдВ) рдореЗрдВ рд╕рд╛рдл рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реЛрдЪрд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдкрд░реЗ рд╕рдордиреНрд╡рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдорд▓рд╛ рдЯреЛрдкреА рдореЗрдВ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЬреЛрдбрд╝реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди:
UI рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ?рдпрджрд┐ рдЖрдк рдорд╛рдереЗ рдкрд░ рдЧреВрдЧрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рдмрдХрд╡рд╛рд╕ рдпрд╛ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ рдирд╣реАрдВ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдиреБрддреНрддрд░рд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рднреА Google рдХрд░реЗрдВред рдирд┐рдХрдЯрддрдо рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреЛ рд╕реВрдЯ рдХрд░рддреА рд╣реИ, рдЬрдм рдХреБрдЫ рдпреВрдЖрдИ рддрддреНрд╡ рдХрд░реНрд╕рд░ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИред
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas, new Vector2(Input.mousePosition), null, out topRightLocalCoord);
рдпреЗ рд╕реАрдзреЗ RectTransformUtility рдФрд░ ScreenPointToLocalPointInRectangle рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд░реЗрдХреНрдЯ (RectTransform) рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд┐рд▓рддреЗ рд╣реИрдВред
рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдореЗрдВ рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд┐рд▓рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas, new Vector2(Screen.width, Screen.height), null, out topRightLocalCoord);
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рдКрдкрд░реА рджрд╛рд╣рд┐рдиреЗ рдмрд┐рдВрджреБ рдХрд╛ рд╕рдордиреНрд╡рдп рдорд┐рд▓рд╛, рддрд╛рдХрд┐ рд╡рд╕реНрддреБ рд╕реНрдХреНрд░реАрди рдХреЛ рджрд╛рдИрдВ рдУрд░ рдЫреЛрдбрд╝ рджреЗ, рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдЗрд╕ рдмрд┐рдВрджреБ рд╕реЗ рдЕрдзрд┐рдХ рджреВрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП + рдЖрдЗрдП рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЪреМрдбрд╝рд╛рдИ рдХреА рдЪреМрдбрд╝рд╛рдИ рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЗрдВрдбреЗрдВрдЯред
рддреЛ, рдкрд╣рд▓рд╛ рдХреИрд╡рд┐рдПрдЯрд╣рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд┐рд▓реЗ рдЬреЛ рд╕реАрдзреЗ рдХреИрдирд╡рд╕ рдХреЗ рдЕрдВрджрд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ, рдЕрдЧрд░ рдирджреА рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░рдд рдореЗрдВ рдирд┐рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдЗрд╕рдХреЗ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рдХреЛрдВ рдХреЛ рдХреИрдирд╡рд╛рд╕ рдХреЗ рдмрдЬрд╛рдп рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рдпреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЦреБрдж рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддреЗред
рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ , рдкрд╣рд▓рд╛ рд╣реИ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВред рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдХреНрдЯ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдЕрд▓рдЧ рд╕реЗ рдХрд░реЗрдВред
рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЕрдзрд┐рдХрд╛рдВрд╢ googled рд╡рд┐рдзрд┐рдпрд╛рдБ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ - TransformPointред
transform.position = myCanvas.transform.TransformPoint(pos);
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ RectTransformUtility рдореЗрдВ рдПрдХ ScreenPointToWorldPointInRectangle рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рддреБрд░рдВрдд рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрд╛рддреА рд╣реИред
рд╣рдореЗрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рджрд╛рд╣рд┐рдиреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдкрд░реЗ рдХреА рдкрд░рдд рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХреНрд╕ рдкреЛрдЬрд┐рд╢рди рд╕реЗ рдорд┐рд▓реА рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╛рдИ рдЙрд╕ рд░реЗрдХ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдШреБрдорд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд╣ рдмрд╕ рджрд╛рдИрдВ рдУрд░ рдЬрд╛рдПред
new Vector3(topRightCoord.x+offset, rectTransform.position.y, 0);
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдордиреНрд╡рдп DoTween рджреНрд╡рд╛рд░рд╛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
rectTransform.DOMove(new Vector3(correctedTargetRight.x, rectTransform.position.y, 0), timeForHiding);
рдФрд░ рд╣реБрд░реНрд░реЗ, рд╡рд╕реНрддреБ рджрд╛рдИрдВ рдУрд░ рдирд┐рдХрд▓ рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди ...
рджреВрд╕рд░реА рдмрд╛рд░реАрдХрд┐рдпрд╛рдБрдпрд╣рд╛рдВ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реЗрдХреНрдЯ рдХреА рдкреЛрдЬрд┐рд╢рди рд░реЗрдХреНрдЯ рдкрд┐рд╡рдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╡рд╕реНрддреБ рдзреБрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдиреГрддреНрдп рдХрд░ рд╕рдХрддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╡рд╕реНрддреБ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдСрдлрд╕реЗрдЯ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдХреЗ рдкреАрдЫреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдзрдХреНрдХрд╛ рдирд╣реАрдВ рджреЗрдЧрд╛, рд╣рдореЗрд╢рд╛ рдПрдХ рдореМрдХрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЯреБрдХрдбрд╝рд╛ рдмрд╛рд╣рд░ рдЪрд┐рдкрдХреЗрдЧрд╛ред
рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рдСрдлрд╕реЗрдЯ рдХреЛ рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд░реЗрдХреНрдЯ + рдкрд┐рд╡рдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдЧрд╛ред
рджреВрд╕рд░реА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд░реАрд▓реЗ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдп рдпрд╛ рдПрдВрдХрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд┐рд▓рддреЗ рд╣реИрдВред рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд╣реАрдВ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдпреВрдЖрдИ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдВрдЧрд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреИрд╕рд╛рдЦреА рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛, рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╢реБрд░реВ рдХреА рд╕реНрдерд┐рддрд┐, рдЗрд╕реЗ рдЕрдВрддрд┐рдо рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рд▓рдВрдЧрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╣реА рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ рдЬреЛ рдСрдлрд╕реЗрдЯ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рд╡рд╕реНрддреБ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдПрдХ рдЦреЛрдЦрд▓реЗ рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╛рддрд╛ рд╣реИ, рдореВрд▓ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рднреВрд▓рдирд╛ред рд╕реНрдерд┐рддрд┐ред
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг var targetRight = new Vector3(topRightLocalCoord.x, rectTransform.position.y, 0); rectTransform.position = targetRight; rectTransform.anchoredPosition += rectTransform.sizeDelta; var correctedTargetRight = rectTransform.position; rectTransform.localPosition = startPoint; rectTransform.DOMove(new Vector3(correctedTargetRight.x, rectTransform.position.y, 0), timeForHiding);
рдпрд╣ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдмреИрд╕рд╛рдЦреА рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмреИрд╕рд╛рдЦреА рдЖрдкрдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдФрд░ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЪрд▓рддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рдкрджрд╛рдиреБрдХреНрд░рдореЛрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдареАрдХ рд╣реИ, рдкреНрд▓рд╕ рдЕрднреА рддрдХ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗ рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрд╛ рд╣реИред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╣рдо рдмреИрд╕рд╛рдЦреА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣реЗрдВрдЧреЗ, рдФрд░ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред
рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛
рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрдд рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреИрдирд╡рд╛рд╕ рдпрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬрд╛рдиреЗрдВрдЧреЗред
рддреАрд╕рд░реА рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, new Vector2(Screen.width, Screen.height), null, out topRightCoord); RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, new Vector2(0, 0), null, out bottomScreenCoord);
рд╕рдВрдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреИрдирд╡рд╛рд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрд╣реАрдВ рднреА рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╕реНрдХреНрд░реАрди рдХреЗ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдХрд┐рдирд╛рд░реЛрдВ рдХреА рджреВрд░реА рдХрд╛рдлреА рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреИрдирд╡рд╛рд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдКрдкрд░реА рджрд╛рдПрдВ рдЫреЛрд░ рд╣реЛрдЧрд╛, рдФрд░ рдКрдкрд░реА рджрд╛рд╣рд┐рдиреЗ рднрд╛рдЧ рдореЗрдВ рдпрд╣ рдКрдкрд░реА рдмрд╛рдПрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдВ рдФрд░ рдКрдкрд░реА рджрд╛рдПрдВ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЪреМрдерд╛ рд╕рдВрдЬреНрдЮрд╛рд╕реНрдерд╛рдиреАрдп рд╕рдордиреНрд╡рдп рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдСрдлрд╝рд╕реЗрдЯ рд╣реИ, рдЬрдм рдПрдХ рдФрд░ рд░реЗрдХреНрдЯ рдореЗрдВ рдЖрдпрдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХреИрдирд╡рд╛рд╕ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рддреА рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рд╕рдордиреНрд╡рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╡рд┐рд╕реНрдерд╛рдкрди рджреЛрдиреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдареАрдХ рд╣реИ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред
((Vector3)bottomLeftCoord + rectTransform.localPosition)
рд╡реИрдХреНрдЯрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рдордиреНрд╡рдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рднреНрд░рд╛рдордХ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рд░реЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рдЧрдгрдирд╛ рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рд╢рд╛рдВрддрд┐ рд╕реЗ рдЕрдВрдд рдореЗрдВ рдмреИрд╕рд╛рдЦреА рдХреЗ рдмрд┐рдирд╛ рдореБрдЖрд╡рдЬрд╛ рдЬреЛрдбрд╝реЗрдВред
(Vector3)topRightCoord + rectTransform.localPosition + (new Vector3((rectTransform.sizeDelta.x * rectTransform.pivot.x) + rectTransform.sizeDelta.x, 0, 0));
рдпрд╣рд╛рдВ рдЖрдпрдд рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдХреЗ рд╕рд╛рде рджрд╛рдИрдВ рдУрд░ рд╢рд┐рдлреНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдордиреНрд╡рдп рд╣реИ рдФрд░ рд╕реНрдХреНрд░реАрди рд╕реЗ рдкрд░реЗ рдХреА рдкрд░рдд рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рд╢рд┐рдлреНрдЯрд┐рдВрдЧ рд╣реИ, рдСрдлрд╕реЗрдЯ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдЦреБрдж рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреАред
рдирд┐рд╖реНрдХрд░реНрд╖
- UI рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рд╕реНрдерд╛рдиреАрдп рдпрд╛ рдПрдВрдХрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕реВрдХреНрд╖реНрдо рдкреНрд░рдХрд░рдгреЛрдВ рдореЗрдВред
- рдЖрдкрдХреЛ RectTransformUtility рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ UI рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рдЖрдпрдд рдХреЗ рдЕрдВрджрд░ рдФрд░ рдЖрд╕рдкрд╛рд╕ рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЧрдгрдирд╛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИрдВред
рдареАрдХ рд╣реИ, рдШрдЯрдХ рдЦреБрдж, рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП DoTween рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
рдЕрдВрдЧ using DG.Tweening; using UnityEngine; public enum Direction { DEFAULT, RIGHT, LEFT, TOP, BOTTOM } public enum CanvasType {OVERLAY, CAMERATYPE} public class HideBeyondScreenComponent : MonoBehaviour { [SerializeField] private Direction direction; [SerializeField] private CanvasType canvasType; [SerializeField] private float timeForHiding = 1; [SerializeField] private float offset = 50; private Vector3 startPoint; private RectTransform rectTransform; private Vector2 topRightCoord; private Vector2 bottomLeftCoord; private void Start() { rectTransform = transform as RectTransform; startPoint = rectTransform.localPosition; Camera camera = null; if (canvasType == CanvasType.CAMERATYPE) camera = Camera.main; RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, new Vector2(Screen.width, Screen.height), camera, out topRightCoord); RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, new Vector2(0, 0), camera, out bottomLeftCoord); Hide(); } public void Show() { rectTransform.DOLocalMove(startPoint, timeForHiding); } public void Hide() { switch (direction) { case Direction.LEFT: rectTransform.DOLocalMove(new Vector3(EndPosition(Direction.LEFT).x, rectTransform.localPosition.y, 0), timeForHiding); break; case Direction.RIGHT: rectTransform.DOLocalMove(new Vector3(EndPosition(Direction.RIGHT).x, rectTransform.localPosition.y, 0), timeForHiding); break; case Direction.TOP: rectTransform.DOLocalMove(new Vector3(rectTransform.localPosition.x, EndPosition(Direction.TOP).y, 0), timeForHiding); break; case Direction.BOTTOM: rectTransform.DOLocalMove(new Vector3(rectTransform.localPosition.x, EndPosition(Direction.BOTTOM).y, 0), timeForHiding); break; } } private Vector3 NegativeCompensation() { return new Vector2((-rectTransform.sizeDelta.x - offset) + rectTransform.sizeDelta.x * rectTransform.pivot.x, (-rectTransform.sizeDelta.y - offset) + rectTransform.sizeDelta.y * rectTransform.pivot.y); } private Vector3 PositiveCompensation() { return new Vector2((rectTransform.sizeDelta.x * rectTransform.pivot.x) + offset, (rectTransform.sizeDelta.y * rectTransform.pivot.y) + offset); } private Vector2 EndPosition(Direction direction) { switch (direction) { case Direction.LEFT: return ((Vector3)bottomLeftCoord + rectTransform.localPosition) + NegativeCompensation(); case Direction.RIGHT: return (Vector3)topRightCoord + rectTransform.localPosition + PositiveCompensation(); case Direction.TOP: return ((Vector3)topRightCoord + rectTransform.localPosition) + PositiveCompensation(); case Direction.BOTTOM: return ((Vector3)bottomLeftCoord + rectTransform.localPosition) + NegativeCompensation(); } return startPoint; } }