<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4497768542277715083</id><updated>2024-09-09T08:10:35.481-07:00</updated><category term="UDK"/><category term="Unity"/><category term="Android"/><title type='text'>Blog Vadakuma</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-841116641989585111</id><published>2016-01-16T09:51:00.000-08:00</published><updated>2016-02-12T14:55:38.886-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Unity"/><title type='text'>Quiz Constructor</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://u3d.as/n7A&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot; asset store page&quot; border=&quot;0&quot; height=&quot;196&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq2YrlSL4fG_p01NnXmk8-DQ4nTCsByxaYs3Id-39LoRYI1GUJwR1Eo29WvS75n7wXQcnRtnTr4ZPhbMOySdfoz8BZUFfxWqZqYLhYG-RHvCpPa-FX352yTDLXZ6NgOvNW7A7uhSz-Z4OQ/s320/logo2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;Quiz Constructor is a tool
for create simple quizzes. You will not to write a code because all settings it
has in special inspector window as a Unity editor extension. There are many
settings about start screen, question settings by questions type, result
screen, UI, timers.&amp;nbsp;Simply add a new question in a question list, setup it
and play. Questions can be different types. At the moment the tool give 3
question types:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;b&gt;Standart question&lt;/b&gt;: the text or image question.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Category question&lt;/b&gt;: to combine the phrases or images by categories.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Comparison question&lt;/b&gt;: compare a description with a image or a name.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://dl.dropboxusercontent.com/s/u2wgtj0i3xqje8f/Out.html&quot; target=&quot;_blank&quot;&gt;Web Player&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://dl.dropboxusercontent.com/s/4y6phr7n7z5om4w/index.html&quot; target=&quot;_blank&quot;&gt;Web GL&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.dropbox.com/s/1ay9945ilw0cex9/QuizExample.apk?dl=0&quot; target=&quot;_blank&quot;&gt;Apk demo&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://u3d.as/n7A&quot; target=&quot;_blank&quot;&gt;Asset Store Page&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://youtu.be/paqjj0H1h6w&quot; target=&quot;_blank&quot;&gt;Video tutorial&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span lang=&quot;EN-US&quot;&gt;Features:&lt;/span&gt;&lt;/strong&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;- 3 types of question:
Standart/Category/Comparison.&lt;br /&gt;
- Many settings for each of the questions type.&lt;br /&gt;
- Flexible settings of the quiz mode.&lt;br /&gt;
- Full source code.&lt;br /&gt;
- Free demo quiz example in the package.&lt;br /&gt;
- The Documentation and video tutorial.&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;
- Mobile/WebPlayer/PC/WebGL support.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span lang=&quot;EN-US&quot;&gt;PS. Last version 1.0.5.&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;h2&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;iframe height=&quot;800&quot; src=&quot;https://drive.google.com/file/d/0B0KnHGXDpCCgQ2JWNnNPLWZHeXc/preview&quot; width=&quot;705&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/841116641989585111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2016/01/quiz-constructor.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/841116641989585111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/841116641989585111'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2016/01/quiz-constructor.html' title='Quiz Constructor'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq2YrlSL4fG_p01NnXmk8-DQ4nTCsByxaYs3Id-39LoRYI1GUJwR1Eo29WvS75n7wXQcnRtnTr4ZPhbMOySdfoz8BZUFfxWqZqYLhYG-RHvCpPa-FX352yTDLXZ6NgOvNW7A7uhSz-Z4OQ/s72-c/logo2.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-5328685061992229927</id><published>2015-08-12T01:17:00.000-07:00</published><updated>2016-03-22T01:19:59.179-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Unity"/><title type='text'>Swipe SlideShow. Tutorial</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkA_ekBXf3NQMQF9rcgrmDLS_-VrfhHh7xL3ux4mB5itjs4NlFAVt80uLzOsdsa74MCYwjNzq1qvgeqT0Ye4DPDgq_8_bWIbHusG1tRGKKxymc2L8Kw7frjbfOn9P8O-U-WDun_vZFZ-dZ/s1600/icon.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkA_ekBXf3NQMQF9rcgrmDLS_-VrfhHh7xL3ux4mB5itjs4NlFAVt80uLzOsdsa74MCYwjNzq1qvgeqT0Ye4DPDgq_8_bWIbHusG1tRGKKxymc2L8Kw7frjbfOn9P8O-U-WDun_vZFZ-dZ/s1600/icon.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;With this
script you can quickly make simple presentation&amp;nbsp;from slides of any
subject. The endless swipe system allow to moving&amp;nbsp;the slides in any direction
(left|right or up|down) without limit&lt;/span&gt;s&lt;span lang=&quot;EN-US&quot;&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;Features:&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkA_ekBXf3NQMQF9rcgrmDLS_-VrfhHh7xL3ux4mB5itjs4NlFAVt80uLzOsdsa74MCYwjNzq1qvgeqT0Ye4DPDgq_8_bWIbHusG1tRGKKxymc2L8Kw7frjbfOn9P8O-U-WDun_vZFZ-dZ/s1600/icon.png&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkA_ekBXf3NQMQF9rcgrmDLS_-VrfhHh7xL3ux4mB5itjs4NlFAVt80uLzOsdsa74MCYwjNzq1qvgeqT0Ye4DPDgq_8_bWIbHusG1tRGKKxymc2L8Kw7frjbfOn9P8O-U-WDun_vZFZ-dZ/s1600/icon.png&quot; /&gt;&lt;/a&gt;
&lt;li&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;text-indent: -18pt;&quot;&gt;Infinity
swiping to any direction.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;times new roman&amp;quot; , &amp;quot;serif&amp;quot;; font-size: 12.0pt;&quot;&gt;Easy&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;times new roman&amp;quot; , &amp;quot;serif&amp;quot;; font-size: 12.0pt;&quot;&gt; swipe
settings.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;times new roman&amp;quot; , &amp;quot;serif&amp;quot;; font-size: 12.0pt;&quot;&gt;Auto-resize in depends of display resolution.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;PC/android/ios/webplayer platforms&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Example demo scene included&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Autosliding.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;times new roman&amp;quot; , &amp;quot;serif&amp;quot;; font-size: 12.0pt;&quot;&gt;Image loading by one button&lt;/span&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Horizontal|Verical swipe mode.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;times new roman&amp;quot; , &amp;quot;serif&amp;quot;; font-size: 12.0pt;&quot;&gt;No events back timer available&lt;/span&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;times new roman&amp;quot; , &amp;quot;serif&amp;quot;; font-size: 12.0pt;&quot;&gt;&lt;i&gt;Sound control&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;a href=&quot;https://dl.dropboxusercontent.com/s/lwpf2jidunq1z60/out.html&quot; target=&quot;_blank&quot;&gt;WEB DEMO&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://u3d.as/itJ&quot; target=&quot;_blank&quot;&gt;Asset Store Page&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;color: #cccccc; text-align: left;&quot;&gt;Video demostartion:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/RRoLQD6jWGo/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/RRoLQD6jWGo?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h5 style=&quot;font-family: Arial, sans-serif; font-size: 14px; line-height: 1.66666666666667; margin: 20px 0px 0px;&quot;&gt;
&lt;span data-mce-style=&quot;color: #000000;&quot;&gt;Last version: 1.3.1&amp;nbsp;&lt;/span&gt;&lt;/h5&gt;
&lt;div&gt;
&lt;span data-mce-style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Instruction below.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;wiki-content&quot; id=&quot;main-content&quot; style=&quot;margin: 1em 0px 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;margin-top: 10px; padding: 0px;&quot;&gt;
&lt;div style=&quot;color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;iframe height=&quot;800&quot; src=&quot;https://drive.google.com/file/d/0B0KnHGXDpCCgWmlIVHF3eHpfam8/preview&quot; width=&quot;705&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/5328685061992229927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2015/08/unity-asset-swipe-slideshow.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/5328685061992229927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/5328685061992229927'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2015/08/unity-asset-swipe-slideshow.html' title='Swipe SlideShow. Tutorial'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkA_ekBXf3NQMQF9rcgrmDLS_-VrfhHh7xL3ux4mB5itjs4NlFAVt80uLzOsdsa74MCYwjNzq1qvgeqT0Ye4DPDgq_8_bWIbHusG1tRGKKxymc2L8Kw7frjbfOn9P8O-U-WDun_vZFZ-dZ/s72-c/icon.png" height="72" width="72"/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-4727707888922154081</id><published>2015-08-09T05:38:00.000-07:00</published><updated>2016-02-04T07:35:39.477-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Unity"/><title type='text'>Show Room for 3D models. Tutorial </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
1 Introduction&lt;/h2&gt;
&lt;div style=&quot;-webkit-background-clip: border-box; background-color: rgba(255, 255, 255, 0.6); background-repeat: no-repeat; box-sizing: border-box; color: #333333; font-family: &#39;Lucida Grande&#39;, &#39;Lucida Sans Unicode&#39;, Helvetica, Arial, sans-serif; font-size: 11px; line-height: 14.3000001907349px; outline: 0px; padding: 0px; text-overflow: ellipsis; vertical-align: top;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVYyOir9PuZyfvmHEND5yXwQTEbJj0ldXYOc79XjDeIXQLEnJ7hScOGr-8SbQ9iolXOY14wrrC1qKgCRDvb38Vx_fpkd2ACgrnAJGb66Hjo2aYmZWDB-x1vzQXawCam-8lqxwbHZ_23zc-/s1600/ssd.png&quot; imageanchor=&quot;1&quot; style=&quot;background-color: transparent; clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVYyOir9PuZyfvmHEND5yXwQTEbJj0ldXYOc79XjDeIXQLEnJ7hScOGr-8SbQ9iolXOY14wrrC1qKgCRDvb38Vx_fpkd2ACgrnAJGb66Hjo2aYmZWDB-x1vzQXawCam-8lqxwbHZ_23zc-/s1600/ssd.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;The represented tool allowing to show the arts/models showcase for the 3D artist with web Unity player and also to create the demonstration presentations on any subjects.&lt;br /&gt;&lt;br /&gt;The tool have a wide set of settings which it will be necessary to will be modified as required and inquiries.&lt;br /&gt;In a package there is already adjusted scenes ready to use, remains only to add the models following the applied instruction.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://dl.dropboxusercontent.com/s/9govt9owl1cbk7k/Out.html&quot; target=&quot;_blank&quot;&gt;Web Player Demo&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://u3d.as/iDH&quot; target=&quot;_blank&quot;&gt;Asset Store Page&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;Feachers&lt;/b&gt;&lt;br /&gt;- Splitting objects into categories&lt;br /&gt;- Playing of animation from the list&lt;br /&gt;- The rotating camera with different settings&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;-&amp;nbsp;Automatic adding objects in prefabs by Tag&lt;br /&gt;- Automatic camera rotation&lt;br /&gt;- Automatic switching of objects&lt;br /&gt;- Simple settings for a scene&lt;br /&gt;- Draw description of 3d model&lt;br /&gt;- A choice of several scenes directly during viewing (3 simple scenes)&lt;br /&gt;- Customisable UI scene elements&lt;br /&gt;- Usage tutorial and video&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Result we can see on this video:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/mSGlt9LmDfg/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/mSGlt9LmDfg?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
See tutorial below&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;/h2&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
2 Usage guide&lt;/h2&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Firstly, add unitypackage in the project.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTxiGivCCqDoMlvoa_qb6UUQonD5QXSipulY-mtiE4knza1G73x06EuI13bSXFA6n4hQkAEATthoNfQ85_QEryYoJonQdjlYPSxgJYSL0y_um87qKGDhZZQPOB9xKE_hmAVvv43qMHct3R/s1600/ierarhy.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;167&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTxiGivCCqDoMlvoa_qb6UUQonD5QXSipulY-mtiE4knza1G73x06EuI13bSXFA6n4hQkAEATthoNfQ85_QEryYoJonQdjlYPSxgJYSL0y_um87qKGDhZZQPOB9xKE_hmAVvv43qMHct3R/s320/ierarhy.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Open &lt;b&gt;ShowRoom &lt;/b&gt;scene from Scenes folder.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Select &quot;&lt;b&gt;RootEmpty&lt;/b&gt;&quot; prefab in the &quot;&lt;b&gt;Prefabs/Roots&lt;/b&gt;&quot; folder project. Make copy for own scene and drag to the scene. You will see the&lt;b&gt; Primary &lt;/b&gt;and the&lt;b&gt; BaseGUI &lt;/b&gt;scripts.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;hr /&gt;
&lt;b&gt;Primary (Script)&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiunElWDmPTRJaAtJgakusPC0sILy_KlACnqKfKQX2v4GVVXw1tGSP30aV4yxzegPzCQdxtpA17KgPEYZ521y0UynA9zQv1PPoP24BMB8tSX7RtLNFOP1AHJOKjwPkEwaRIi-qb31wMFt3S/s1600/Primary.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiunElWDmPTRJaAtJgakusPC0sILy_KlACnqKfKQX2v4GVVXw1tGSP30aV4yxzegPzCQdxtpA17KgPEYZ521y0UynA9zQv1PPoP24BMB8tSX7RtLNFOP1AHJOKjwPkEwaRIi-qb31wMFt3S/s640/Primary.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Main parametr in this script is &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Obj Categories&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. It is a list of all objects splitted on categories.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;At start we should add own object|3d models or prefabs in the project.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;If some objects are available&amp;nbsp;animation, add to them &quot;&lt;b&gt;Animation&lt;/b&gt;&quot; component and add in animations array your animation clips.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;When they are added you can modify&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Obj Categories&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;Add all objects to &amp;nbsp;the scene and create your own Tag for them.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0RLp53em_GnyDA7X-xhfpypKJyrFrwsg7dOzmW-5Hu52nAGy1oPCquLb5AW3lxXwDCbKSyhQhiSWcDtwEM9v8eNgxqk6eRyh4eIYlRCg0RST6ImowXLY5WHmwK_DNcccs48vBn8DiWTAo/s1600/addTag.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;318&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0RLp53em_GnyDA7X-xhfpypKJyrFrwsg7dOzmW-5Hu52nAGy1oPCquLb5AW3lxXwDCbKSyhQhiSWcDtwEM9v8eNgxqk6eRyh4eIYlRCg0RST6ImowXLY5WHmwK_DNcccs48vBn8DiWTAo/s400/addTag.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;2)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;Select all objects and set created Tag.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXV3Nx6EtXMAcn7Fbmfnb3UhefLSBMGqSV1nSysJFvRhOLsY4q-wWtLnHL7EX9grdRDelQjeAcH44-8tSMoR-xQq-7soe6Eiz6DunTBkYqYQ2z_Yl__Recb-wxS7VAZOCIWbHgkHd6fpUz/s1600/setNewTag.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXV3Nx6EtXMAcn7Fbmfnb3UhefLSBMGqSV1nSysJFvRhOLsY4q-wWtLnHL7EX9grdRDelQjeAcH44-8tSMoR-xQq-7soe6Eiz6DunTBkYqYQ2z_Yl__Recb-wxS7VAZOCIWbHgkHd6fpUz/s400/setNewTag.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;Select Root object and open &lt;/span&gt;&lt;b style=&quot;color: #cccccc;&quot;&gt;Primary &lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;component. You will see some buttons. But previosly you should set your objects tag in &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Objects Tag&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; submenu.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjULJBdnExAtTVDQx_EFjbT4q9LLgH_vandhRJ_VSAyeOAJIM3JIa8CNGloYPoJFSXpglafLEzzUEaHeOoaHhjpX7k43U0u4veOUarz-Fd3p658-CmR0Kc-gl7nytLMQvHNfxrU37FnFlPV/s1600/primarySetneTag.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjULJBdnExAtTVDQx_EFjbT4q9LLgH_vandhRJ_VSAyeOAJIM3JIa8CNGloYPoJFSXpglafLEzzUEaHeOoaHhjpX7k43U0u4veOUarz-Fd3p658-CmR0Kc-gl7nytLMQvHNfxrU37FnFlPV/s640/primarySetneTag.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Set&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Destroy objects after addition&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; trigger&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;to true if you want to automatic delete all objects from scene when they added to the list.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;4)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;Click on &lt;b&gt;Add Objects to Category by Tag&lt;/b&gt; button.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg35dRZp_gs8yGTgChSsSZbhg21FX2CgP4GUwU1an5yQqAVWSez3rGZM1SfrVeNDdVsMyZMse66UkqmPJczKUHxe1M6P9xZrbplcVZ22HWMvASsQ7nhQpyzf_crIlwytKAYPSlqKrfTiMfG/s1600/createcategory.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;217&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg35dRZp_gs8yGTgChSsSZbhg21FX2CgP4GUwU1an5yQqAVWSez3rGZM1SfrVeNDdVsMyZMse66UkqmPJczKUHxe1M6P9xZrbplcVZ22HWMvASsQ7nhQpyzf_crIlwytKAYPSlqKrfTiMfG/s640/createcategory.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Script create &lt;b&gt;Asset/Prefabs/MyTag_Prefabs&lt;/b&gt; folder and save all taging objects as prefabs. Now taging objects from scene aren&#39;t necessary any more.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;In&lt;/span&gt;&lt;b&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;Obj Categories&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; created special category of object with your Tag.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;5)&lt;/b&gt;&amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Now you can add/change description/name/animation for all objects in selected category.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTUZ9SG_zB8bkilJWDH2-J5OYaNnO5BexWy3LsSuxvWbw-V5RRamrQQY80ugnUALnMe2EZnFu_XyzaZqLumxmhlrmjmiMow5s38iskZ1PLs5KFPw_KT_jywSzu6xWphNCOFXUTZIh7NLWi/s1600/changecategorstuff.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTUZ9SG_zB8bkilJWDH2-J5OYaNnO5BexWy3LsSuxvWbw-V5RRamrQQY80ugnUALnMe2EZnFu_XyzaZqLumxmhlrmjmiMow5s38iskZ1PLs5KFPw_KT_jywSzu6xWphNCOFXUTZIh7NLWi/s400/changecategorstuff.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;6)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;Click to &lt;b&gt;Aplly &lt;/b&gt;button for save root prefab. (It is important)&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR50j5SczwrOVtGGV-4uJXBGJyZ_GnaRacP_O4b5jZSQELx5GR4TdpV7ZUMTA8HVvhwkQaljyew65Ma4QjwMb0GlvZSYUSbcdyawkrJddSOC1NCV4avqIXurGcz6Mrq35G6Bblvt5cLDNF/s1600/apply.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR50j5SczwrOVtGGV-4uJXBGJyZ_GnaRacP_O4b5jZSQELx5GR4TdpV7ZUMTA8HVvhwkQaljyew65Ma4QjwMb0GlvZSYUSbcdyawkrJddSOC1NCV4avqIXurGcz6Mrq35G6Bblvt5cLDNF/s640/apply.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Save this scene as MyShowRoom.scene, for example. Now you can play and see result.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;hr /&gt;
&lt;b&gt;BaseGUI&lt;/b&gt;&lt;b&gt;&amp;nbsp;(Script)&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqSqXZeYXHBiM6Sun5B8NSwvJ2j39Qh8SJM2tvnZdfyH7S6h3Q2HgAwU1UQ907VEiWJrJf4KhAPqdv5dcGeut5cG0xBFnY4f7gLcfnBqwwex7iPZL8WR3G-bS8UGkx3wKGzxIsXVUiKvXx/s1600/BaseGUI.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqSqXZeYXHBiM6Sun5B8NSwvJ2j39Qh8SJM2tvnZdfyH7S6h3Q2HgAwU1UQ907VEiWJrJf4KhAPqdv5dcGeut5cG0xBFnY4f7gLcfnBqwwex7iPZL8WR3G-bS8UGkx3wKGzxIsXVUiKvXx/s400/BaseGUI.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;BaseGUI &lt;/b&gt;controlling all UI action in show room. At the moment you can change only 4 special UI groups.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Prev Next Group &amp;nbsp;&amp;nbsp;&lt;/span&gt; &lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;- draw two button for switching object&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Description Group&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; - draw name and description text about current object&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Anims Group&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;- draw animations list for current object and button play/stop&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Category Group&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- draw categories list. &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;You can change position/size/drawing/content position/content size to all 4 UI group.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Main Scene Light&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; - add there scene light to controlling light intecity in game.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Draw Debug GUI Layers &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;- n&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;eed for tests where was click|touch in game. If on gui layer - we will not rotate the camera. For reposition and resizing set &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Draw Debug GUI Layers&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; trigger to true.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #bf9000;&quot;&gt;&lt;b&gt;Show Scenes&lt;/b&gt; &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;- add your scenes to this array and you can switching them in game from SceneSettings UI group.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;hr /&gt;
&lt;b&gt;CameraOrbit&lt;/b&gt;&lt;b&gt;&amp;nbsp;(Script)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Camera Orbit script component is in MainCamera object, but you can add this script on other object. Script automaticaly find Camera.main object.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd3_YnGtf9DTxPweMI1IqgTgZ5sitxDywZGpm7XFfulu3ETqPBk-pBXdb-4oNt2G1808i2YETwaqglNbT91ynt4o6MgI7HCxSfatEvdzmf__olkCtp47xfB2XaWGsD-LVhBtbTYhzW6CNg/s1600/cameraOrbit.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;195&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd3_YnGtf9DTxPweMI1IqgTgZ5sitxDywZGpm7XFfulu3ETqPBk-pBXdb-4oNt2G1808i2YETwaqglNbT91ynt4o6MgI7HCxSfatEvdzmf__olkCtp47xfB2XaWGsD-LVhBtbTYhzW6CNg/s400/cameraOrbit.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Previosly, create new special emptyObject or use CameraPoint object in RootEmpty prefab &amp;nbsp;and set to&lt;/span&gt;&lt;b&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;Target&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #bf9000;&quot;&gt;&lt;b&gt;Target&lt;/b&gt; &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;- center of rotation of the camera. &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Use Auto Rotation Mode&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; - if this mode active you can not rotate camera.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Use Auto Rotation Mode On Idle&lt;/span&gt; &lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;- automatic camera rotation activationg when no touches.&lt;/span&gt;&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;hr /&gt;
&lt;/h2&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
3 Video instructions&lt;/h2&gt;
&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;See also the video tutorial how to add models in show room:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/VjjGudl6MVI/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/VjjGudl6MVI?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;See the video tutorial how to modify UI groups in show room:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/rAitJYXbnl0/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/rAitJYXbnl0?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;hr /&gt;
&lt;/h2&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
4 Additional Info&lt;/h2&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;See also my other asset packs:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/#!/content/30211&quot; target=&quot;_blank&quot;&gt;Camera Pack&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;a href=&quot;https://www.assetstore.unity3d.com/#!/content/30719&quot; target=&quot;_blank&quot;&gt;Transform Randomizer&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Contact details below:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;a href=&quot;mailto:vadakuma@gmail.com&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;vadakuma@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;2015.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/4727707888922154081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2015/08/show-room-for-3d-models-tutorial.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/4727707888922154081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/4727707888922154081'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2015/08/show-room-for-3d-models-tutorial.html' title='Show Room for 3D models. Tutorial '/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVYyOir9PuZyfvmHEND5yXwQTEbJj0ldXYOc79XjDeIXQLEnJ7hScOGr-8SbQ9iolXOY14wrrC1qKgCRDvb38Vx_fpkd2ACgrnAJGb66Hjo2aYmZWDB-x1vzQXawCam-8lqxwbHZ_23zc-/s72-c/ssd.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-964411369737794867</id><published>2015-08-02T13:44:00.000-07:00</published><updated>2015-08-12T13:42:26.019-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Unity"/><title type='text'>Скрипт для Unity. &quot;Transform Randomizer&quot;</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Функциональность скрипта довольно простая. По заданному тэгу или имени скрипт случайно изменяет выбранные параметры transform в указанных диапазонах для всех найденных на сцене объектов. Тем самым можно случайно задать расположение, направление, размер по отдельности, или все вместе. Также, &amp;nbsp;ввиде эксперимента тот же механизм применен для изменения выбранного параметра в материле(точнее цвет материла). Т.е. можно изменить цвет/оттенок в материале из указанной палитры.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://www.assetstore.unity3d.com/#!/content/30719&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;AssetStore&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.assetstore.unity3d.com/#!/content/30719&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;img alt=&quot; assetstore&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvJu1cqOCnSO8JTWSaeM_n_grhqM_jH3hiS_N8oeDoRtPM02wLaf5OyLJpWgI4qIQrM1U8aDh5ye_4keC0dcFTrP4qxsA0qnMlYwYh9Jyf5gMYIYzcLUI67DyhWACMIFGPMMMg3HX1yHBk/s1600/icon_precise.png&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Демонстрация работы:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/aajkvYAQbYw/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/aajkvYAQbYw?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/964411369737794867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2015/08/unity-asset-transform-randomizer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/964411369737794867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/964411369737794867'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2015/08/unity-asset-transform-randomizer.html' title='Скрипт для Unity. &quot;Transform Randomizer&quot;'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvJu1cqOCnSO8JTWSaeM_n_grhqM_jH3hiS_N8oeDoRtPM02wLaf5OyLJpWgI4qIQrM1U8aDh5ye_4keC0dcFTrP4qxsA0qnMlYwYh9Jyf5gMYIYzcLUI67DyhWACMIFGPMMMg3HX1yHBk/s72-c/icon_precise.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-6273619653710887918</id><published>2015-08-02T13:27:00.000-07:00</published><updated>2015-08-12T13:42:05.372-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Unity"/><title type='text'>Скрипт Камеры на Unity</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Собрал в одну кучу часть наработок по камере и оформил в более менее приемлемом виде. Теперь можно просто добавить в проект настроить по своему усмотрению. Имеется несколько режимом работы, ингейм переключение между режимами, а также довольно широкий список регулируемых параметров для каждого режима.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Ссылка на страницу asset store:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.assetstore.unity3d.com/#!/content/30211&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;img alt=&quot; assetstore&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8khWIdl9mFerrooP-qi8xcZxCHHmfxm3jXEpuhUYyOfmqfGU5uCOim5bzA8FUNkrVx6ua5jWgK2AVsxvFZOU3jg6yUFz6mZyVdiX4xFJSbGvOngVfI9m3nJP4h7z79s3qCgjUutwY1laf/s1600/icon.png&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Скриншоты из демки&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQxgHRDDx9teiD_jTASzUHcZazaMHM9YzQLxJvic82caIXAEH1CPOgkomxPrXp6H4vpz3elNmKdoLBr2mIpBis9JMptfa28b52b2ZPLoNP19yLb-xITgYmtOWB2SoOFFYZUUzNHPH2ZTYx/s1600/screen1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQxgHRDDx9teiD_jTASzUHcZazaMHM9YzQLxJvic82caIXAEH1CPOgkomxPrXp6H4vpz3elNmKdoLBr2mIpBis9JMptfa28b52b2ZPLoNP19yLb-xITgYmtOWB2SoOFFYZUUzNHPH2ZTYx/s320/screen1.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJy7FX_gz5asUJ-nkKwx2pEOwjqiQffbmt57f2u8ciGOjTWrl1NGOyZZMXUJIsMqtlt0EIq5sXPJTxQqtSzCY3IaLRi-ISgk8fl06G_yetq9iY3LyVH4tONf3JyZ_xNefl59Wu9jocDkyj/s1600/058b8a11c3eaa4af5ab012e044747f3f.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJy7FX_gz5asUJ-nkKwx2pEOwjqiQffbmt57f2u8ciGOjTWrl1NGOyZZMXUJIsMqtlt0EIq5sXPJTxQqtSzCY3IaLRi-ISgk8fl06G_yetq9iY3LyVH4tONf3JyZ_xNefl59Wu9jocDkyj/s320/058b8a11c3eaa4af5ab012e044747f3f.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJy7FX_gz5asUJ-nkKwx2pEOwjqiQffbmt57f2u8ciGOjTWrl1NGOyZZMXUJIsMqtlt0EIq5sXPJTxQqtSzCY3IaLRi-ISgk8fl06G_yetq9iY3LyVH4tONf3JyZ_xNefl59Wu9jocDkyj/s1600/058b8a11c3eaa4af5ab012e044747f3f.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Сама демка: &lt;a href=&quot;https://dl.dropboxusercontent.com/s/5mjtzqh14h0vw74/out.html&quot; target=&quot;_blank&quot;&gt;DEMO&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;Возможно кого-нибудь заинтересует :)&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/6273619653710887918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2015/08/unity-asset-camera-pack.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/6273619653710887918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/6273619653710887918'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2015/08/unity-asset-camera-pack.html' title='Скрипт Камеры на Unity'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8khWIdl9mFerrooP-qi8xcZxCHHmfxm3jXEpuhUYyOfmqfGU5uCOim5bzA8FUNkrVx6ua5jWgK2AVsxvFZOU3jg6yUFz6mZyVdiX4xFJSbGvOngVfI9m3nJP4h7z79s3qCgjUutwY1laf/s72-c/icon.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-1979093506358349645</id><published>2013-08-12T10:46:00.001-07:00</published><updated>2013-08-26T10:54:02.954-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Проверка актуальности udk</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&amp;nbsp; &amp;nbsp; По стечению обстоятельств, на данный момент большую часть времени работаю с unity. Не сказал бы, что сильно этим огорчен, все таки кодинг там куда удобнее, чем на udk.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Но так или иначе, даже при более подробном знакомстве с столь нынче популярным unity, мне все также приятнее работать с udk, и желания бросать движок окончательно, не &amp;nbsp;появляется.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Причины конечно исключительно субъективны, да и движки уж больно разного профиля, чтобы их всерьез сравнивать, но все же :)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Вот небольшой пример, что можно сделать на udk, по сути в одиночку(да,да, левел-диз из меня никудышный, да и анимации нету, я по большей части программист, ну и конечно статус у проекта &amp;nbsp;&quot;в разработке&quot; :))&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; В ролике, расположенном ниже, присутствует жестокость, выражающаяся в причинении вымышленным существам разного рода физического вреда, также можно наблюдать намеренное отсутствие баланса(для тестов &quot;далеких&quot; перков) в геймплее и бессмертие вооруженного параллелепипеда(для быстрого снятия видео) и не рекомендуется смотреть тем, кто смотреть не хочет на то, каким порой бывает жестоким параллелепипед. :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/kAgIpSFMIFU?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Думаю и на unity конечно можно сделать отлично, но примеров мощных проектов ААА класса пока маловато(но похоже вскоре ситуация изменится, что не может ни радовать)&lt;br /&gt;
Но particle system в udk зачетная...&lt;br /&gt;
&lt;br /&gt;
PS. Быть может, руки дойдут, будет и баланс в этой техно демке, и анимации, и много чего еще .(пока только полноценная перковая прокачка до 60lvl, разное оружие, бонусы, да с пятОк фич)&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/1979093506358349645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/08/udk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/1979093506358349645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/1979093506358349645'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/08/udk.html' title='Проверка актуальности udk'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-7072691480673759253</id><published>2013-04-29T13:05:00.000-07:00</published><updated>2013-04-29T13:06:24.000-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Делаем hud health status в udk</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt; &amp;nbsp;Расскажу, как можно заменить стандартную иконку с жизнями на свою собственную, с помощью flash и с минимумом знаний обо всем этом. Основой служили вот эти &lt;/span&gt;&lt;span style=&quot;color: #cfe2f3;&quot;&gt;&lt;a href=&quot;http://noexp.wordpress.com/scaleform-hud-tutorial/&quot;&gt;уроки и скрипты&lt;/a&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;они также рекомендованы  к просмотру&lt;/span&gt;&lt;span style=&quot;color: #cfe2f3;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, &amp;nbsp;к слову все дальнейшие манипуляции я делаю в September(2010) версии.&lt;/span&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Первым делом нам следует заготовить swf файл. (на примере работы с adobe flash cs). Создаем проект как &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Action Script 2.0&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;(в новых версиях udk уже имеется поддержка as3.0), выставляем разрешение 1024x768(не обязательно такое).&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;hr style=&quot;background-color: #000005; border-bottom-color: rgb(58, 52, 83); border-style: solid none; border-top-color: rgb(40, 32, 55); color: #a199b8; font-family: Tahoma, Verdana, &#39;Century gothic&#39;, Arial, sans-serif; font-size: 13px; line-height: 24px;&quot; /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4dQm2muKZDG9cDcTd76bTljZBM2534ktSWBeZxQbiG9eoT6fv8LW6FtES95xciI8U8AQExr7EJwYrxmMjDoYjrxZ_kuQhUQSYgWcxCkb9x7C80jB_sDaNz3tZhv4H6MaJmVbwKvNhWzZk/s1600/1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4dQm2muKZDG9cDcTd76bTljZBM2534ktSWBeZxQbiG9eoT6fv8LW6FtES95xciI8U8AQExr7EJwYrxmMjDoYjrxZ_kuQhUQSYgWcxCkb9x7C80jB_sDaNz3tZhv4H6MaJmVbwKvNhWzZk/s400/1.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Нюансы:&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;1) &amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;В настройках импортируемых картинок нужно обязательно убирать расширение. Не выполнение этого условия приведет к аварийному завершению UDK. Также ставим галочки как на скриншоте.(Наводим на загруженную текстуру в библиотеке проекта &amp;gt; правой кнопкой мыши &amp;gt; свойства)&lt;/span&gt;&lt;br /&gt;
&lt;br style=&quot;background-color: #000005; color: #a199b8; font-family: Tahoma, Verdana, &#39;Century gothic&#39;, Arial, sans-serif; font-size: 13px; line-height: 24px;&quot; /&gt;
&lt;hr style=&quot;background-color: #000005; border-bottom-color: rgb(58, 52, 83); border-style: solid none; border-top-color: rgb(40, 32, 55); color: #a199b8; font-family: Tahoma, Verdana, &#39;Century gothic&#39;, Arial, sans-serif; font-size: 13px; line-height: 24px;&quot; /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh069LHCXmtLpLEzybeoTez98hlSkQ8-k1PoqeP6LRYjWVP6V3w_-90Ga8pb-i3zFubyCyPXVl5N7_RXG92Tji0ShweLZMFaTwF-sJ3FX8Hf3gBvqClCClde1YBWOagVQwUMNGJIllyk3i7/s1600/2a.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;309&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh069LHCXmtLpLEzybeoTez98hlSkQ8-k1PoqeP6LRYjWVP6V3w_-90Ga8pb-i3zFubyCyPXVl5N7_RXG92Tji0ShweLZMFaTwF-sJ3FX8Hf3gBvqClCClde1YBWOagVQwUMNGJIllyk3i7/s320/2a.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2) &amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Текущее значение жизни будем передавать как параметр типа string, назначаем ему соответствующее имя экземпляра, дабы потом правильно к нему обращаться через uscript.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Создаем &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;textField&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, пишем там 100, еще создаем&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;textField&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;- пишем %.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Объект&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;&amp;nbsp;textField&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, где написано 100, присваиваем имя &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;player_health&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Оно нам пригодится (используется при обращении в  скриптах).  &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj92abRaMnKjReGhi0xG5hoN37tDHez566hlyCkfBvWjzNln88TCbQ2YQQWIr4MEbVd-xlawdwma9HN3PeI68T0vALaP6dnzexRU_5VYtUwTTE8zMVxl504CJYopT5CYI51WF79komSUAwD/s1600/3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj92abRaMnKjReGhi0xG5hoN37tDHez566hlyCkfBvWjzNln88TCbQ2YQQWIr4MEbVd-xlawdwma9HN3PeI68T0vALaP6dnzexRU_5VYtUwTTE8zMVxl504CJYopT5CYI51WF79komSUAwD/s400/3.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Есть вероятность, что могут быть проблемы со шрифтами. Для устранения этих проблем, в библиотеку исходников создаваемой флешки добавим используемые шрифты.&lt;/span&gt;&lt;br /&gt;
&lt;hr style=&quot;background-color: #000005; border-bottom-color: rgb(58, 52, 83); border-style: solid none; border-top-color: rgb(40, 32, 55); color: #a199b8; font-family: Tahoma, Verdana, &#39;Century gothic&#39;, Arial, sans-serif; font-size: 13px; line-height: 24px;&quot; /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDMfe9mmd4LLIXR92Sx31YARoPEJxjKLJ8pXGDuu-Ne5-xBh2VEoz-4WTFwdY0GLj7XK1aER66alNiCByPzBvZbprvmO5xSqaXiiU4WX2wf7qABnoq339yAXntHrGfF4vlpXZZnvI6lW4A/s1600/4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDMfe9mmd4LLIXR92Sx31YARoPEJxjKLJ8pXGDuu-Ne5-xBh2VEoz-4WTFwdY0GLj7XK1aER66alNiCByPzBvZbprvmO5xSqaXiiU4WX2wf7qABnoq339yAXntHrGfF4vlpXZZnvI6lW4A/s400/4.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjsQrvdKLwNxwxxQHMOnBC7KzBP0gmdaGoySXsnJ9FFXGfUja4n1QEoEHNwt8VRC6OUWj3nE8Pk1YZ3KijZ1o5zG1_8Do2_GxSa3T5E8N2rlOy3BJRMG5WuPkFX_7bmGCTIrWKnpoobIED/s1600/5a.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjsQrvdKLwNxwxxQHMOnBC7KzBP0gmdaGoySXsnJ9FFXGfUja4n1QEoEHNwt8VRC6OUWj3nE8Pk1YZ3KijZ1o5zG1_8Do2_GxSa3T5E8N2rlOy3BJRMG5WuPkFX_7bmGCTIrWKnpoobIED/s320/5a.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;hr style=&quot;background-color: #000005; border-bottom-color: rgb(58, 52, 83); border-style: solid none; border-top-color: rgb(40, 32, 55); color: #a199b8; font-family: Tahoma, Verdana, &#39;Century gothic&#39;, Arial, sans-serif; font-size: 13px; line-height: 24px;&quot; /&gt;
&amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt; &amp;nbsp; Для примера добавлен простой фон под 100%, дизайн же вывода текущих жизней ограничивается лишь вашей фантазией, все на ваше усмотрение, а в данном случае осталось только вставить немного кода в новом слое.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Итак выделяем новый слой, жмем&lt;/span&gt;&lt;span style=&quot;color: white;&quot;&gt; &lt;b&gt;F9&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и вставляем такой код:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;import gfx.motion.Tween;
_global.gfxExtensions = true;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt; &amp;nbsp; Первая строка добавляет библиотеку Tween(не думаю что это здесь обязательно, по крайней мере, пример очень простой и эту библиотеку вряд ли использует. Библиотека добавляет возможность анимации муверов, с контролем из uscript), вторая строка разрешает вести диалог между action script и unreal script, при помощи чего и будут передаваться параметр, вызываться функции. За хорошим примером, чего можно добиться этой связкой, далеко идти не надо - тоже меню в udk как раз эффективно показывает возможности взаимодействия scaleform и unreal script.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; После того, как  опубликовали и создали все нужные файлы, загружаем их в UDK. Создадим простой тип игры для примера.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Прописываем в своем&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;Test_InfoGame&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;собственный контроллер и hud. Остальные настройки по умолчанию.&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class Test_InfoGame extends  UTDeathmatch; 

DefaultProperties
{
    //Indentify your GameInfo
    Acronym=&quot;ST&quot;

    PlayerControllerClass=class&#39;FlashHealthGame.Test_PlayerController&#39;
    HUDType=class&#39;FlashHealthGame.THUD&#39;
    //DefaultPawnClass=class&#39;UTGame.UTPawn&#39;
 
    //This variable was created by Epic Games to allow back compatability with UIScenes
    bUseClassicHUD=true

    bDelayedStart=false
    bRestartLevel=false
    Name=&quot;Test_GameInfo&quot;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Просто балванка контроллера.&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class Test_PlayerController extends UTPlayerController;

DefaultProperties
{
    bForceBehindView=false
    Name=&quot;Test_PlayerController&quot;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;Этот класс отвечает за отработку hud элементов. В конкретном случае, просто рождаем класс, который&amp;nbsp;ответственен&amp;nbsp;за работу scaleform компонента.&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class THUD extends UTHUDBase;

//Reference the actual SWF container (STGFxHUD created later)
var STGFXHUD HudMovie;

//Called when this is destroyed
singular event Destroyed()
{
    if (HudMovie != none) 
    {
        //Get rid of the memory usage of HudMovie
        HudMovie.Close(true);
        HudMovie = none;
    }

    super.Destroy();
}

//Called after game loaded - initialise things
simulated function PostBeginPlay() 
{
    super.PostBeginPlay();

    //Create a STGFxHUD for HudMovie
    HudMovie = new class&#39;STGFXHUD&#39;;
 
    //Set the timing mode to TM_Real - otherwide things get paused in menus
    HudMovie.SetTimingMode(TM_Real);
 
    //Call HudMovie&#39;s Initialise function
    HudMovie.Init(class&#39;Engine&#39;.static.GetEngine().GamePlayers[HudMovie.LocalPlayerOwnerIndex]);
}

//Called every tick the HUD should be updated
event PostRender() {
    HudMovie.TickHUD();
}

DefaultProperties
{
}&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Отвечает за общение с флешкой и передачи параметров.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class STGFXHUD extends GFxMoviePlayer;

//Create a Health Cache variable
var float LastHealthpc;

//Create variables to hold references to the Flash MovieClips and Text Fields that will be modified
var GFxObject HealthTF;


function Init(optional LocalPlayer player) 
{
    //Start and load the SWF Movie
    Start();
    Advance(0.f);

    //Set the cahce value so that it will get updated on the first Tick
    LastHealthpc = -1337;

    //Load the references with pointers to the movieClips and text fields in the .swf
    HealthTF = GetVariableObject(&quot;_root.player_health&quot;);
}

//Called every update Tick
function TickHUD()
{
    local UTPawn UTP;
    local PlayerController PC;
 
    PC = GetPC();
    //We need to talk to the Pawn, so create a reference and check the Pawn exists
    UTP = UTPawn(PC.Pawn);
 
    //If the cached value for Health percentage isn&#39;t equal to the current...
    if (LastHealthpc != UTP.Health)
    {
        // update the text field
        HealthTF.SetText(UTP.Health);
        //...Make it so...
        LastHealthpc = UTP.Health;
    }
    else if (LastHealthpc &amp;lt;= 0)
    {
        HealthTF.SetText(0);
        close();
    }
}


DefaultProperties
{
    //this is the HUD. If the HUD is off, then this should be off
    bDisplayWithHudOff=false
    //Местонахождение флешки
    MovieInfo=SwfMovie&#39;Test_flash.Test.Test_flash&#39;
}&lt;/pre&gt;
&lt;b style=&quot;background-color: #000005; color: #a199b8; font-family: Tahoma, Verdana, &#39;Century gothic&#39;, Arial, sans-serif; font-size: 13px; line-height: 24px;&quot;&gt;&lt;span style=&quot;color: white; font-size: 18pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt; Не забудьте правильно прописать путь к флешке в &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;DefaultProperties&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, которую загрузили в UDK. Создаем, компилируем, запускаем UDK, загружаем тестовый уровень, ставим нужный тип игры в настройках, радуемся.&lt;/span&gt;&lt;br /&gt;
&lt;hr style=&quot;background-color: #000005; border-bottom-color: rgb(58, 52, 83); border-style: solid none; border-top-color: rgb(40, 32, 55); color: #a199b8; font-family: Tahoma, Verdana, &#39;Century gothic&#39;, Arial, sans-serif; font-size: 13px; line-height: 24px;&quot; /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJLSIPMonIJBFV1Nla-9zbt4zLBLGWtJ0NFSIu8aiJ_znyeLryMNFP1O7UK_DDsguGCR8m42OPrNm884dsklsUnBTb-qzfB2t0pGHlffQZBsKBNJErwLwP6wS5CdGTfrPukCx-md7xQvmk/s1600/6a.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;248&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJLSIPMonIJBFV1Nla-9zbt4zLBLGWtJ0NFSIu8aiJ_znyeLryMNFP1O7UK_DDsguGCR8m42OPrNm884dsklsUnBTb-qzfB2t0pGHlffQZBsKBNJErwLwP6wS5CdGTfrPukCx-md7xQvmk/s320/6a.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieWq2oQm2pcuYBOGRL0HlCBOo-4_1Z1-eFH0i04sXIx2Jl-0TjJysLiZiZScecDTN-bbgYtz_8ZxfKQDcr8KcAYC68_1rH48hR7YyBuA7-Dl436s-jJVV0xVAn7oDsxkDrYhdfUk4Fmbkq/s1600/7a.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;247&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieWq2oQm2pcuYBOGRL0HlCBOo-4_1Z1-eFH0i04sXIx2Jl-0TjJysLiZiZScecDTN-bbgYtz_8ZxfKQDcr8KcAYC68_1rH48hR7YyBuA7-Dl436s-jJVV0xVAn7oDsxkDrYhdfUk4Fmbkq/s320/7a.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizDrOc1bkqNfAfIcNtRkim3s7Ug8iEWeO_DOGBgHJjtfEnnv3x2fysF6a74VDsQnu-1AvsbIibqLTbsoZBgqDtD3-Nbj7gcyAXbuW5dSe4_h1yFoudayM-NT0nH6V_gILKpYWckKT0eZI0/s1600/8a.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;248&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizDrOc1bkqNfAfIcNtRkim3s7Ug8iEWeO_DOGBgHJjtfEnnv3x2fysF6a74VDsQnu-1AvsbIibqLTbsoZBgqDtD3-Nbj7gcyAXbuW5dSe4_h1yFoudayM-NT0nH6V_gILKpYWckKT0eZI0/s320/8a.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;hr style=&quot;background-color: #000005; border-bottom-color: rgb(58, 52, 83); border-style: solid none; border-top-color: rgb(40, 32, 55); color: #a199b8; font-family: Tahoma, Verdana, &#39;Century gothic&#39;, Arial, sans-serif; font-size: 13px; line-height: 24px;&quot; /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;http://vadakuma.ru/load/0-0-0-8-20&quot;&gt;&lt;span style=&quot;color: #d9d2e9;&quot;&gt;Исходники&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Cсылки по теме:&lt;/span&gt;&lt;br /&gt;
http://noexp.wordpress.com/scaleform-hud-tutorial/&lt;br /&gt;
http://forecourse.com/unreal-tutorials/&lt;br /&gt;
http://www.youtube.com/user/scaleformpress#p/u/16/_nsOOSBBbdg&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/7072691480673759253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/04/hud-health-status-udk.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/7072691480673759253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/7072691480673759253'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/04/hud-health-status-udk.html' title='Делаем hud health status в udk'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4dQm2muKZDG9cDcTd76bTljZBM2534ktSWBeZxQbiG9eoT6fv8LW6FtES95xciI8U8AQExr7EJwYrxmMjDoYjrxZ_kuQhUQSYgWcxCkb9x7C80jB_sDaNz3tZhv4H6MaJmVbwKvNhWzZk/s72-c/1.jpg" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-9030584723265493816</id><published>2013-04-14T04:50:00.001-07:00</published><updated>2013-04-14T04:53:01.785-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Подгружаем уровни (level streaming)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt; Очевидно, что игры частенько состоят из нескольких больших или не очень, уровней. По задумки создателя или иным причинам, порой бывает необходимо создать несколько игровых уровней, которые должны будут подгружаться лишь по надобности. Такая возможность имеется и в UDK и реализуется довольно просто.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Часто получается так, что требуется загрузить огроменную локацию, которая будет претендовать на приличный кусок ресурсов компьютера. Если позволяет дизайн, в такие моменты очень удобно использовать подгружаемые уровни. Т.е. вся локация будет разбита на куски - игрок находится только в определенной части карты, а в нужным момент подгружается необходимая часть, в то время как &amp;nbsp;уже не нужная - выгружается. Если все сделано аккуратно(а кто ж сомневается в обратном?), для игрока это практически не заметно, а разработчикам и компьютеру проще работается.&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; На самом деле можно просто загрузить другой уровень с помощью kismet, но на это уходит&amp;nbsp;побольше&amp;nbsp;времени(если уровень велик) и в случаях, когда приходится часто скакать с одного уровня на другой, долгая загрузка будет раздражать игрока(и не только его).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;br style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_I9y7xYKMQytWTv0G4Ctx9QUBGyO0tIZ7ta-9jQ4VD_YpT4b0g8IyyFOxRxl08c-rx29eBytxmd3gDqMUWLHqjQzFLlOjkECkUsEXzfgCHPVdstti-29WB4rByzTt0SY9zo0OGCYFBtNJ/s1600/89724343.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;246&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_I9y7xYKMQytWTv0G4Ctx9QUBGyO0tIZ7ta-9jQ4VD_YpT4b0g8IyyFOxRxl08c-rx29eBytxmd3gDqMUWLHqjQzFLlOjkECkUsEXzfgCHPVdstti-29WB4rByzTt0SY9zo0OGCYFBtNJ/s320/89724343.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;На всякий случай расскажу, как можно загрузить уровень из другого уровня.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Создав простейший уровень, ставим на него, для примера, триггер (при касании триггера будет загружаться другой уровень), в редакторе жмем правую кнопку мыши и выбираем &lt;/span&gt;&lt;span style=&quot;color: #7f6000;&quot;&gt;Add Actor&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #7f6000;&quot;&gt;Add Trigger&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Выделяем его  и идем в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Kismet&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipqevkbkB7qvDsDTtZidtcy2-SOArkKHxPWlrAibiZkB0lOca4gLqJG1vUnzXvvZ5KAWzsovV-GtLIytzh5StgjY30x5BWLdDGUM_1DmHmAt2iTXvroNieAS5rvPlylMN2vEoz4mtOiBZv/s1600/34020343.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;302&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipqevkbkB7qvDsDTtZidtcy2-SOArkKHxPWlrAibiZkB0lOca4gLqJG1vUnzXvvZ5KAWzsovV-GtLIytzh5StgjY30x5BWLdDGUM_1DmHmAt2iTXvroNieAS5rvPlylMN2vEoz4mtOiBZv/s400/34020343.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Делаем как на скриншоте:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #7f6000;&quot;&gt;New Action &lt;/span&gt;&amp;gt; &lt;span style=&quot;color: #7f6000;&quot;&gt;Misc &lt;/span&gt;&amp;gt; &lt;span style=&quot;color: #7f6000;&quot;&gt;Console Command&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #7f6000;&quot;&gt;New Event Using Trigger_1&lt;/span&gt; &amp;gt; &lt;span style=&quot;color: #7f6000;&quot;&gt;Touch&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #7f6000;&quot;&gt;New Variable&lt;/span&gt; &amp;gt; &lt;span style=&quot;color: #7f6000;&quot;&gt;Player &lt;/span&gt;&amp;gt; &lt;span style=&quot;color: #7f6000;&quot;&gt;Player&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt; &amp;nbsp; Соединяем. Выделяем  &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Console Command &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;и в строке &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Commands &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;пишем &quot;&lt;/span&gt;&lt;span style=&quot;color: #f1c232; font-family: Courier New, Courier, monospace;&quot;&gt;open DM-Deck&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&quot; без кавычек. Это команда загрузки уровня&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt; DM-Deck&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Есть небольшая особенность - если Вы хотите подгрузить свой уровень (куда ж без этого) то он должен находиться в папке:&amp;nbsp;&lt;/span&gt;&lt;b&gt;C:\UDK\UDK-2010-XX\UDKGame\Content\Maps&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;дабы UDK увидел ваш уровень. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; И еще, уровень будет подгружаться, если вы запустите игру как &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Play on PC&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. По другому не заработает. И не забудьте поставить &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;PlayerStart&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, и т.д. и т.п. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;С этим разобрались. Теперь задача такая - подгружаем один уровень прямо в другой.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Создаем  простейший уровень. Я создал несколько платформ. Все они немного соприкасаются друг с другом, но это не обязательно. Можно просто раскидать по разным углам - как Вам удобно. Сохраняем его (например &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;map_full&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Теперь удаляем все платформы кроме первой и ребилдим (жмем кнопку &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Build Geometry for visible levels&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;), сохраняем уровень (например &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&lt;b&gt;map_01&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;). Загружаем &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&lt;b&gt;map_full &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;и тем самым возвращаем уровни. Удаляем все платформы кроме второй - ребилдим и сохраняем (&lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&lt;b&gt;map_02&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;). И так далее. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy81yW8Gv7n0yT7RxFcWTbpaIEjVPNk-l0nlD-7sDcylGRwAvi6KPzNwz1ip4R1wxaYNV9mHAqJEcEWS5Y909-yMGwNCnf5pjTbRhxtVM3dhEKF2M84Qe9hkXYe8XT_IUsBxUyKuNeSPbV/s1600/51935167.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;306&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy81yW8Gv7n0yT7RxFcWTbpaIEjVPNk-l0nlD-7sDcylGRwAvi6KPzNwz1ip4R1wxaYNV9mHAqJEcEWS5Y909-yMGwNCnf5pjTbRhxtVM3dhEKF2M84Qe9hkXYe8XT_IUsBxUyKuNeSPbV/s400/51935167.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix-PjTMcNhxXAAa8AtIGBbTa7-nHq7oBplJY6V5WW_VjzEHIuYH5xlQyJn5rOsrLTe6VGEFGgENbMq7jiojIIrbRyQDgVFULV81Y0G3ktQbjI9F4ZMFldDURdqlvPaTi7kkI42xPX1vNXi/s1600/77659421.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;305&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix-PjTMcNhxXAAa8AtIGBbTa7-nHq7oBplJY6V5WW_VjzEHIuYH5xlQyJn5rOsrLTe6VGEFGgENbMq7jiojIIrbRyQDgVFULV81Y0G3ktQbjI9F4ZMFldDURdqlvPaTi7kkI42xPX1vNXi/s400/77659421.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Загружаем &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&lt;b&gt;map_01&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, ставим свет, точку старта для игрока - созраняем. теперь идем в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Content Browser&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и переходим на вкладку &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;levels&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Выбираем &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Add Existing Level&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и добавляем туда &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&lt;b&gt;map_02&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&lt;b&gt;map_03&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и т.д. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Примечание&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;: у меня получилось нормально добавить карты только после того как я их переместил в &lt;/span&gt;&lt;br /&gt;
&lt;b&gt;C:\UDK\UDK-2010-XX\UDKGame\Content\Maps&lt;/b&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Из других место они не добавлялись. Увы, с чем это связано пока не разобрался. Может кто подскажет?&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; В появившемся окошке выбираем &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Kismet &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;(будем управлять подгрузкой через &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Kismet&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;). &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;AlwaysLoaded&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; - тут понятно, постоянно загруженный, а с третьим еще не экспериментировал. Сохраняем. Если сейчас запустить уровень, то мы увидим только &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&lt;b&gt;map_01&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, что вполне естественно - команды загружать остальные платформы не было. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzoWybD3GC4xs5tU1WCNnLdCsw88Oek7na_ZT7jwyxnienFNlpczrNNrwQwve-zekz-y_CMTwT6CaMP_rC9xc43q2J0vo20ge8uSg0lzEC9TcThRtzg2EB_PAGt0HwtS2OvJqKZOMYHX01/s1600/82478548.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;303&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzoWybD3GC4xs5tU1WCNnLdCsw88Oek7na_ZT7jwyxnienFNlpczrNNrwQwve-zekz-y_CMTwT6CaMP_rC9xc43q2J0vo20ge8uSg0lzEC9TcThRtzg2EB_PAGt0HwtS2OvJqKZOMYHX01/s400/82478548.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;Чтобы загружались остальные платформы через триггер, мы используем &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Kismet&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Но сначала сделаем триггер, для этого выставляем размеры у &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;builder brush&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;  и  жмем правой кнопкой мыши по значку &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Add Volume&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, далее выбираем из списка &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;TriggerVolume&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Теперь у нас есть триггер. Нам нужно сделать так, чтобы при касании области триггера, подгружалась следующая платформа. Для этого идем в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Kismet &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;и делаем вот такую схемку:&lt;/span&gt;&lt;br /&gt;
&lt;br style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaqXiHupBbQwgoxASr0rXN_gWjZS1y73bYqu8AysHtgfwke8E1QLcGmLWLEWacfdelnH5iogtEXCHgGQgfpqdD6DSshBgZ1rI9Nosl2aRhH4unaAZapZIOZ4zS0SJhF64qnlldGPSgSnFF/s1600/74144892.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;268&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaqXiHupBbQwgoxASr0rXN_gWjZS1y73bYqu8AysHtgfwke8E1QLcGmLWLEWacfdelnH5iogtEXCHgGQgfpqdD6DSshBgZ1rI9Nosl2aRhH4unaAZapZIOZ4zS0SJhF64qnlldGPSgSnFF/s400/74144892.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;br style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Это у нас:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #7f6000;&quot;&gt;New Event Using TriggerVolume_1&lt;/span&gt; &amp;gt; &lt;span style=&quot;color: #7f6000;&quot;&gt;Touch&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #7f6000;&quot;&gt;New Action&lt;/span&gt; &amp;gt; &lt;span style=&quot;color: #7f6000;&quot;&gt;Level &lt;/span&gt;&amp;gt; &lt;span style=&quot;color: #7f6000;&quot;&gt;Stream Level&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br style=&quot;font-family: Verdana, Tahoma, Arial;&quot; /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkRCCh4_XzKPUSKgxr2_4obglbsTx9ClsXl9et03JBTtS9eXdulcKgcJsNAkPR_Cmlb46OMCKNiwaY_0TSG5p1Wk_e_MCG7U9m55BipnbfJMtXfn0-FG9vO-OD7Q0fch5ahWQSLuIa5rxt/s1600/11369013.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;307&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkRCCh4_XzKPUSKgxr2_4obglbsTx9ClsXl9et03JBTtS9eXdulcKgcJsNAkPR_Cmlb46OMCKNiwaY_0TSG5p1Wk_e_MCG7U9m55BipnbfJMtXfn0-FG9vO-OD7Q0fch5ahWQSLuIa5rxt/s400/11369013.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;br style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9_DFuAaEFhIsHdOtd12Gp-Fi_XURIjRyFS3wHzvqN2IY6gwMfzMSZZSXwk29zLb8_12Xjk7fD_6M-omrYFKOFMesFMQczU1QfvGuAc-329EI0Z5V2zf8ccTZV4D_a9Cdw8eHS5s2nT9g8/s1600/39374820.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;307&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9_DFuAaEFhIsHdOtd12Gp-Fi_XURIjRyFS3wHzvqN2IY6gwMfzMSZZSXwk29zLb8_12Xjk7fD_6M-omrYFKOFMesFMQczU1QfvGuAc-329EI0Z5V2zf8ccTZV4D_a9Cdw8eHS5s2nT9g8/s400/39374820.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br style=&quot;font-family: Verdana, Tahoma, Arial;&quot; /&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;Выделяем&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt; Stream Level&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и пишем там название подгружаемого уровня.Тоже самое проделываем с остальными уровнями. Вот в общем то и все, дальше уже сами экспериментируйте.&lt;/span&gt;&lt;br /&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwOAz6meLXIxgCfGQ9aW6r7Aeg1OqUCl34RB3TLl1sKuNrpzlZ8fo07pkJwKPPQlDmolqqLu0mW3JmpX3iasCHWdj5tZkeBB-XxXZUFRRZdZIBzYoNKszhM_w0QN1ZZMa6OHasl6bB9fTB/s1600/06967878.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;310&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwOAz6meLXIxgCfGQ9aW6r7Aeg1OqUCl34RB3TLl1sKuNrpzlZ8fo07pkJwKPPQlDmolqqLu0mW3JmpX3iasCHWdj5tZkeBB-XxXZUFRRZdZIBzYoNKszhM_w0QN1ZZMa6OHasl6bB9fTB/s400/06967878.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsxndfnLfwv-a068HrXGGDVj4ijDe2OG-MxCvcP0NfFXkRj-mU5MVWFrk0ZiObhtAHuqnYeqSK0q30f56a7yCfgZN1x93SU59XmCYfw_F8wyKVw19221uMwsQXdIMe2HDZH2_0wNVy8Uk7/s1600/56621808.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;308&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsxndfnLfwv-a068HrXGGDVj4ijDe2OG-MxCvcP0NfFXkRj-mU5MVWFrk0ZiObhtAHuqnYeqSK0q30f56a7yCfgZN1x93SU59XmCYfw_F8wyKVw19221uMwsQXdIMe2HDZH2_0wNVy8Uk7/s400/56621808.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;hr style=&quot;font-family: Verdana, Tahoma, Arial; font-size: 11px;&quot; /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/9030584723265493816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/04/level-streaming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/9030584723265493816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/9030584723265493816'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/04/level-streaming.html' title='Подгружаем уровни (level streaming)'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_I9y7xYKMQytWTv0G4Ctx9QUBGyO0tIZ7ta-9jQ4VD_YpT4b0g8IyyFOxRxl08c-rx29eBytxmd3gDqMUWLHqjQzFLlOjkECkUsEXzfgCHPVdstti-29WB4rByzTt0SY9zo0OGCYFBtNJ/s72-c/89724343.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-647996516742249867</id><published>2013-04-14T04:48:00.000-07:00</published><updated>2013-04-14T04:48:22.033-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Creating a XP System</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Author:  &quot;mktwo&quot;&lt;br /&gt;
Перевод: &lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;b&gt;Vadakuma&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Оригинал&amp;nbsp;&lt;a href=&quot;http://udkc.info/index.php?title=Tutorials:Creating_a_XP_system&quot;&gt;статьи&lt;/a&gt;,&amp;nbsp;ее&amp;nbsp;&lt;a href=&quot;http://forums.epicgames.com/showthread.php?t=722333&quot;&gt;обсуждение&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Прежде всего убедитесь, что Вы уже знаете как устанавливать эти коды, т.к. в этом титориале это не объясняется.Во вторых, я полагаю что Вы уже немного знакомы с&lt;/span&gt; &lt;span style=&quot;color: #ffd966;&quot;&gt;UnrealScript&lt;/span&gt;.&lt;span style=&quot;color: #cccccc;&quot;&gt; Например Вы  должны знать как наследуемые классы работают и как делается свой тип  игры, как сделать свой собственный HUD, PlayerController и т.д. Если Вы не знаете всего этого то можно некоторые вещи посмотреть на этом сайте(в дальнейшем тут будет намного больше информации о UnrealScript),также на других русских сайтах и естественно на заморских.например&lt;/span&gt; &lt;a href=&quot;http://udkc.info/index.php?title=UDK/Configure&quot;&gt;тут&lt;/a&gt; &lt;span style=&quot;color: #cccccc;&quot;&gt;и&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;http://forecourse.com/unreal-tutorials/&quot;&gt;тут&lt;/a&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;HUD создан по этому &lt;/span&gt;&lt;a href=&quot;http://www.shad-fr.com/udk/hudtut/english.html&quot;&gt;тутору&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Необходимый набор скриптов, для реализации задачи:&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;MyGame.uc&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;MyPlayerController.uc&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;SeqAct_GiveXP.uc (optional)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;MyHUD.uс&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;span style=&quot;color: #ffd966;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #ffd966;&quot;&gt;MyGame.uc&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Скрипт описывает созданный тип игры&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class MyGame extends UTGame;

// Функция, которая выполняется после каждого убийства
function ScoreKill(Controller Killer, Controller Other)
{
     local MyPlayerController PC;
     
     super.ScoreKill(Killer, Other);
     
     PC = MyPlayerController(Killer); // Cast to the custom MyPlayerController class
     PC.GiveXP(100); //Позволяет изменять кол-во получаемого опыта
}

DefaultProperties
{
//    DefaultPawnClass = class&#39;UTGame.UTPawn&#39;
     PlayerControllerClass = class&#39;MyGame.MyPlayerController&#39;
     HUDType = class&#39;MyGame.MyHUD&#39;
}&lt;/pre&gt;
&lt;hr /&gt;
&lt;span style=&quot;color: #ffd966;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #ffd966;&quot;&gt;MyPlayerController.uc&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Получаем экспу, повышаем левел. Методы не находятся в &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;MyPawn&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, &amp;nbsp;для того чтобы опыт сохранялся после смерти.(хотя конечно можно и изловчиться)&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class MyPlayerController extends UTPlayerController
 config(MyGame);

const MAX_LEVEL = 50;
const XP_INCREMENT = 500; // Кол-во опыта до следующего уровня
var int XP; // Общая сумма собранных XP
var int Level; // Current level
var int XPGatheredForNextLevel; // Количество XP собранных 
var int XPRequiredForNextLevel; // Количество необходимых XP до нового уровня

//При старте игры мы подсчитываем сколько нужно получить опыта чтобы перейти на новый уровень

simulated function PostBeginPlay()
{
    super.PostBeginPlay();
    // Обсчитываем свойства при старте игры
    CalculateLevelProgress();
}

//Здесь мы объявляем функцию,которая позволяет поменять кол-во опыта нужного для следующего  уровня через Kismet 
// Функция вызываемая из Kismet
public function AddXP(SeqAct_GiveXP action)
{
    GiveXP(action.Amount); // Количество опыта получаемого с учетом  установки в Kismete
}

//Функция добавления опыта
public function GiveXP(int amount)
{
     self.XP += amount;
     
     CalculateLevelProgress();
     
     while (self.XPGatheredForNextLevel &amp;gt;= self.XPRequiredForNextLevel &amp;amp;&amp;amp; self.Level &amp;lt; MAX_LEVEL)
     {
         self.Level++;
         // Пересчитываем опыт после левел апа
         CalculateLevelProgress();
     }
}

//Дальше мы объявляем функцию которая считает, сколько нужно еще опыта для достижения следующего уровня.
private function CalculateLevelProgress()
{
    local int xpToCurrentLevel; // Текущее количество накопленного опыта
    
    xpToCurrentLevel = XP_INCREMENT * (self.Level - 1);
    self.XPGatheredForNextLevel = self.XP - xpToCurrentLevel;
    self.XPRequiredForNextLevel = self.Level * XP_INCREMENT;
}

DefaultProperties
{
     Level = 1;
     XP = 0;
}&lt;/pre&gt;
&lt;hr /&gt;
&lt;span style=&quot;color: #ffd966;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #ffd966;&quot;&gt;SeqAct_GiveXP.uc (optional)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;В этом скрипте мы создаем &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Sequence Action&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, который будем использовать в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Kismet&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class SeqAct_GiveXP extends SequenceAction;
 
var() int Amount; // Amount of XP this action will give


//Добавляем немного инфы чтобы было удобнее использовать в kismete
DefaultProperties
{
     // Имя  функции в Kismet Editor
     ObjName=&quot;Add XP&quot;
     // Имя  функции при использовании
     HandlerName=&quot;AddXP&quot;
     Amount = 0
     // Показывает входы и выходы модуля в Kismetе
     VariableLinks(1)=(ExpectedType=class&#39;SeqVar_Int&#39;, LinkDesc=&quot;Amount&quot;, bWriteable=true,   PropertyName=Amount)
}&lt;/pre&gt;
&lt;hr /&gt;
&lt;span style=&quot;color: #ffd966;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #ffd966;&quot;&gt;MyHUD.uc&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Скрипт рисует на экране шкалы со здоровьем, текущем уровнем и количеством опыта.&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class MyHUD extends UTHUD;

function DrawBar(String  Title, float Value, float MaxValue,int X, int Y, int R, int G, int B) // Функция рисования шкал
{
     local int PosX; //объявляем переменную представляющую позицию откуда начинать рисовать
     local int BarSizeX; //Объявляем переменную регулирующую
     
     PosX = X; //Начальная точка, откуда начинаем рисовать прямоугольник
     BarSizeX = 300 * FMin(Value / MaxValue, 1); // размер активного прямоугольника (Увеличивайте 300 чтобы увеличить прямоугольник)
 
     //Рисуем закрашенный прямоугольник
     Canvas.SetPos(PosX,Y);
     Canvas.SetDrawColor(R, G, B, 200);
     Canvas.DrawRect(BarSizeX, 12);
 
     //Рисуем пустой прямоугольник
     Canvas.SetPos(BarSizeX+X,Y);
     Canvas.SetDrawColor(255, 255, 255, 80);
     Canvas.DrawRect(300 - BarSizeX, 12); //Увеличивайте 300 чтобы увеличить прямоугольник
 
     //Рисуем наше заглавие
     Canvas.SetPos(PosX+300+5, Y); //Change 300 to however big your bar is
     Canvas.SetDrawColor(R, G, B, 200);
     Canvas.Font = class&#39;Engine&#39;.static.GetSmallFont();
     Canvas.DrawText(Title);
} 


function DrawGameHud()
{
     local MyPlayerController PC; 
     PC = MyPlayerController(PlayerOwner);
     
     if ( !PlayerOwner.IsDead() &amp;amp;&amp;amp; !UTPlayerOwner.IsInState(&#39;Spectating&#39;)) //If player is not dead or spectating... ( you could also //use DrawLivingHud() )
     {        
         DrawBar(&quot;Health:&quot;@PlayerOwner.Pawn.Health@&quot;%&quot;,PlayerOwner.Pawn.Health, PlayerOwner.Pawn.HealthMax,20,20,200,80,80); //...draw our health-bar
         DrawBar(&quot;Level:&quot;@PC.Level, PC.Level, PC.MAX_LEVEL ,20,40,200,200,200); //...and our level-bar
         if ( PC.Level != PC.MAX_LEVEL ) //If our player hasn&#39;t reached the highest level...
         {
             DrawBar(&quot;XP:&quot;@PC.XPGatheredForNextLevel$&quot;/&quot;$PC.XPRequiredForNextLevel, PC.XPGatheredForNextLevel, PC.XPRequiredForNextLevel, 20, 60, 80, 255, 80); //...draw our XP-bar
         }
     }
}&lt;/pre&gt;
&lt;hr /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Используем Kismet для изменения системы получения опыта&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Сначала Вы должны сделать триггер,  жмем&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;&lt;b&gt;Add Actor&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&amp;gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;&lt;b&gt;&amp;nbsp;Add Trigger&lt;/b&gt;. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Дальше выбираем триггер и идем в kismet. Добавляем триггер&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;&lt;b&gt;New Event Using Trigger_0&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&amp;gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;&lt;b&gt;&amp;nbsp;Touch&lt;/b&gt;&lt;/span&gt;. &lt;span style=&quot;color: #cccccc;&quot;&gt;Добавляем &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Add XP-action&lt;/span&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Соединяем&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;Touched &lt;/span&gt;с &lt;span style=&quot;color: #bf9000;&quot;&gt;In.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Далeе &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;&lt;b&gt;New Variable&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&amp;gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;&lt;b&gt;&amp;nbsp;Player&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&amp;gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;&lt;b&gt;&amp;nbsp;Player&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #cccccc;&quot;&gt;и цепляем к&lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt; target.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;New Variable&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&amp;gt;&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;&amp;nbsp;Int&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&amp;gt;&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;&amp;nbsp;Int&lt;/span&gt;&lt;/b&gt; &lt;span style=&quot;color: #cccccc;&quot;&gt;и пишем количество начисляемого  опыта за одно убийство и цепляем к &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Amount&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Сохраняем и наслаждаемся результатом!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/647996516742249867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/04/creating-xp-system.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/647996516742249867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/647996516742249867'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/04/creating-xp-system.html' title='Creating a XP System'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-488674416661797602</id><published>2013-04-14T04:38:00.001-07:00</published><updated>2013-04-14T04:39:16.023-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Создание C++ DLL для получения списка допустимых разрешений экрана</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Автор: &lt;a href=&quot;http://forums.epicgames.com/members/1461001-Spoof&quot;&gt;Spoof&lt;/a&gt;&lt;br /&gt;
Перевод: &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Vadakuma&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
ОРИГИНАЛ: &lt;a href=&quot;http://forums.epicgames.com/threads/869310-Tutorial-Building-a-C-DLL-and-script-class-to-list-graphics-resolutions&quot;&gt;&lt;span style=&quot;color: #d9d2e9;&quot;&gt;Building a C++ DLL and script class to list graphics resolutions&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt; Консольная команда &lt;/span&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;SETRES&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; предназначена для смены разрешения окна, а также для перехода в полноэкранный режим и обратно. Но, к сожалению, нет никакой информации, какие именно разрешения экрана поддерживает машина пользователя.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; В этом уроке я покажу вам как создается &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Dynamic Link Library utility&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; с помощью C++ и классы &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;UnrealScript &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;для взаимодействия с dll-кой, в итоге получим список поддерживаемых разрешений от пользовательской машины, а это очень полезная информация, к примеру, для корректного отображения UI.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Нет необходимости в глубоком понимании процесса, можно просто скопировать C++ код и скомпилировать проект. Я намеренно упростил код, переведя большую часть функциональности в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;UnrealScript &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;часть.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Итог, потребуется сделать такие шаги:&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; 1)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; Создать dll проект в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Microsfot Visual C++ 2010 Express  &lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; 2)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; Cкомпилировать код С++&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; 3)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; Создать &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;UnrealScript &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;класс, для взаимодействие с полученной dll-кой. С помощью обращений к dll из этого класса будет составлен набор доступных разрешений.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
 Шаг 1 Создаем DLL проект&lt;/h3&gt;
&lt;br /&gt;
&lt;b&gt;1)&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Можно использовать любой C++ IDE/compiler, но в этом уроке буду пользоваться именно &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Microsoft Visual C++ 2010 Express.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -&lt;/span&gt;&lt;b&gt;Select File -&amp;gt; New -&amp;gt; Project&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;... откроется окна с выбором, какой проект создать.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -Выберете &lt;/span&gt;&lt;b&gt;Win32 from &lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;в списке слева, затем &lt;/span&gt;&lt;b&gt;Win32 Console Application&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; в центре.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -Чуть ниже введите название проекта &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;DeviceInfo&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, создайте папку для проекта, если не устраивает адрес     проживания по умолчанию.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;2)&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Нажимаем на &lt;/span&gt;&lt;b&gt;Ok&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, создавая тем самым пустой проект.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -Нажимаем &lt;/span&gt;&lt;b&gt;Next &amp;amp;gt&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;; доходим до окна с настройками.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -Тип приложение поставьте &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;DLL&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -Под дополнительными опциями выберете&lt;/span&gt;&lt;b&gt; Empty Project&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;3)&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Жмем &lt;/span&gt;&lt;b&gt;Finish &lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;и тем самым подтверждаем создание настроенного нами проекта.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -В главном меню выбираем &lt;/span&gt;&lt;b&gt;Project -&amp;gt; Add New Item &lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;открется окно выбора, какого рода файл вы хотите создать. Будьте уверены, что выбрали именно &quot;&lt;/span&gt;&lt;b&gt;add&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&quot; в вашем IDE.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -Выберете &lt;/span&gt;&lt;b&gt;Code &lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;в настройках, и &lt;/span&gt;&lt;b&gt;C++ File (.cpp) &lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;в центре.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -Введите имя файла&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt; DeviceInfo.cpp&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -Жмем на &lt;/span&gt;&lt;b&gt;add&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;(добавить).&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;4)&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Теперь в проекте должен появиться пустой C++ файл. Но перед тем как начнем его заполнять, необходимо сделать ряд обязательных настроек, для того чтобы наш dll файл мог работать с UDK.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -В окне &lt;/span&gt;&lt;b&gt;Solution Explorer &lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;жмите правой кнопкой мыши по имени проекта и выбирайте &lt;/span&gt;&lt;b&gt;Properties(свойства)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;b&gt;Замечание:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;i&gt;проект должен находиться в корне древа папок и файлов. Если в следующем шаге возникнут проблемы, возможны вы открыли не те настройки.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -В окне настроек  code generation : &lt;/span&gt;&lt;b&gt;Configuration Properties -&amp;gt; C/C++ -&amp;gt; Code Generation&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;(Свойства конфигурации &amp;gt; С/С++ &amp;gt; Создание кода)&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; -Справа от строки  &lt;/span&gt;&lt;b&gt;Struct Member Alignment(Выравнивание членов структур)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; выберете опцию &quot;&lt;/span&gt;&lt;b&gt;4 byte (/Zp4)&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Эта опция гарантирует, что структуры, определенные в C++, будут иметь идентичное с &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;UnrealScript &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;байт выравнивание, кратное 4ем.  Члены структуры между собой будут иметь расстояние, кратное 4 байтам , что позволит вытаскивать значения параметров по верному адресу.&lt;/span&gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
 Шаг 2 Пишем C++ код&lt;/h3&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Копируем этот кусок кода в &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;DeviceInfo.cpp&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: cpp&quot;&gt;/* Include the windows header file, which resolves references to DEVMODE and EnumDisplaySettings */

#include &amp;lt;windows.h&amp;gt;&amp;nbsp;
#define DLLExport __declspec(dllexport)&amp;nbsp;

/* Ensure compatibility between C and C++ code */&amp;nbsp;
extern &quot;C&quot;&amp;nbsp;
{&amp;nbsp;
&amp;nbsp; &amp;nbsp; /* UDK_Resolution, a mirror of our UnrealScript struct Resolution.
&amp;nbsp; &amp;nbsp; &amp;nbsp;Both must have identical structure, and the C++ compiler should be set
&amp;nbsp; &amp;nbsp; &amp;nbsp;to pack on 4-byte boundaries (/Zp4)*/&amp;nbsp;
&amp;nbsp; &amp;nbsp; struct UDK_Resolution&amp;nbsp;
&amp;nbsp; &amp;nbsp; { &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int PixelWidth, PixelHeight;
&amp;nbsp; &amp;nbsp; };&amp;nbsp;

&amp;nbsp; &amp;nbsp; /* DLLEnumDisplaySettings A wrapper for the Windows function EnumDisplaySettings.&amp;nbsp;
&amp;nbsp; &amp;nbsp; UDK_Resolution * const udk_r This is a pointer to the local variable &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &#39;r&#39; defined in our UnrealScript function, which allows us to modify it directly from the DLL.
&amp;nbsp; &amp;nbsp; The names do not need to match with UnrealScript, and the prefix &#39;udk_&#39; is only&amp;nbsp;
&amp;nbsp; &amp;nbsp; to help define its role. The pointer is made const to add some safety.&amp;nbsp;
&amp;nbsp; &amp;nbsp; Pointers are powerful and brutal. Learn C/C++ before tinkering with them.*/
&amp;nbsp; &amp;nbsp; DLLExport int DLLEnumDisplaySettings( int modeNum, UDK_Resolution * const udk_r )&amp;nbsp;
&amp;nbsp; &amp;nbsp; { &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DEVMODE dm; &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dm.dmSize = sizeof(DEVMODE);&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Each call to EnumDisplaySettings populates &#39;dm&#39; with the width, height,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bit-depth and refresh rate for the device mode specified by modeNum.&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; However, we&#39;re only concerned with resolution so we keep width and height,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; and discard the rest. The NULL value in the first parameter will query&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; the current display adaptor which should be fine for our purposes.*/
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ( EnumDisplaySettings(NULL, modeNum, &amp;amp;amp;dm) )
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // copy the width and height properties of DEVMODE to &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // UnrealScript&#39;s Resolution &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; udk_r-&amp;amp;gtPixelWidth = dm.dmPelsWidth;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; udk_r-&amp;amp;gtPixelHeight = dm.dmPelsHeight;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 1;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // EnumDisplaySettings returned false, meaning the specified modeNum &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // does not exist &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 0;
&amp;nbsp; &amp;nbsp; &amp;nbsp;}
}&lt;/pre&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Компилируем проект нажав &lt;/span&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;F7&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Visual Studio автоматически сохранит файл cpp и начнет сборку проекта. Если в проекте все правильно, то компилирование закончится успешно, а также появится dll файл, который расположится в папке отладки(Debug) в  DeviceInfo project. Если вы используете win7, то путь до файла будет примерно таким:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\DeviceInfo\Debug\DeviceInfo.dll&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Копируем &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;DeviceInfo.dll&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; в ваш udk проект  &lt;/span&gt;&lt;b&gt;UDK-version/Binaries/Win32/UserCode&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; папку. У меня выглядит это так:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;D:\UDK\UDK-2011-09\Binaries\Win32\UserCode\DeviceInfo.dll&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;b&gt;ВАЖНО&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;: DLL созданная нами, является win-32 версией. Если вы работаете над 64-ным проектом, вам необходимо скомпилировать библиотеку под 64-битную платформу. Для того чтобы наша созданная библиотека подключилась и работала, нужно запускать UDK в 32-битном режиме (из папки Win32).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Шаг 3  UnrealScript и тестирование&lt;/h3&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;Создаем новый класс в вашем udk проекте с названием &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;DeviceInfo.uc&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Переносим туда следующий код и сохраняем.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: cpp&quot;&gt;class DLLDeviceInfo extends Object
&amp;nbsp;DLLBind(DeviceInfo);

/* Resolution, holds the width and height of a display resolution.
*/
struct Resolution
{
&amp;nbsp; &amp;nbsp; var int PixelWidth, PixelHeight;
};

/* An array of Resolutions, listing all the unique display resolutions found
*/
var array&amp;lt;resolution&amp;gt; AllResolutions;

/* DLL import declaration, matching the call signature of the function defined in&amp;nbsp;
&amp;nbsp;our DLL
*/
dllimport final function int DLLEnumDisplaySettings(int modeNum, out Resolution r);

/* EnumDeviceModes, builds a list of graphics resolutions supported by the hardware.
&amp;nbsp;Each call to DLLEnumDisplaySettings may return a new resolution, or a duplicate&amp;nbsp;
&amp;nbsp;resolution with different bit-depth and refresh rate. For SETRES and our UI options
&amp;nbsp;we only require a list of the unique resolutions, so we&#39;ll filter out all the
&amp;nbsp;duplicates.
*/
function EnumDeviceModes()
{
&amp;nbsp; &amp;nbsp; local Resolution r;
&amp;nbsp; &amp;nbsp; local int modeNum;
&amp;nbsp; &amp;nbsp; local int key;
&amp;nbsp; &amp;nbsp; local array&amp;lt;int&amp;gt; keys;

&amp;nbsp; &amp;nbsp; `log(&quot;Enumerating device modes...&quot;);
&amp;nbsp; &amp;nbsp; // Start with mode 0
&amp;nbsp; &amp;nbsp; modeNum = 0;
&amp;nbsp; &amp;nbsp; // Query device mode 0, 1, 2, ... etc. DLLEnumDisplaySettings returns 0&amp;nbsp;
&amp;nbsp; &amp;nbsp; //when all modes have been reported
&amp;nbsp; &amp;nbsp; while( DLLEnumDisplaySettings(modeNum, r) != 0 )
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // combine width and height into a single integer &#39;key&#39;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; key = r.PixelWidth &amp;amp;lt;&amp;amp;lt; 16 | r.PixelHeight;
/* This simple trick filters out duplicate resolutions by creating a&amp;nbsp;
&amp;nbsp;unique key for each combination of width and height. If our key list
&amp;nbsp;doesn&#39;t yet contain an entry for this combo then we have a new
&amp;nbsp;resolution to add to our list of AllResolutions.
&amp;nbsp;
&amp;nbsp;Reduces hundreds of reported modes down to a handful of useable options.
&amp;nbsp;Which is nice.
&amp;nbsp;*/
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Already added this combination of width and height?
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ( keys.Find(key) == INDEX_NONE )
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Add the new resolution
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AllResolutions.Additem(r);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Add the key
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; keys.AddItem(key);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // next device mode
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; modeNum++;
&amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; // Report some useful info...
&amp;nbsp; &amp;nbsp; `log(AllResolutions.Length@&quot;available resolutions from&quot;@modeNum@&quot;device modes&quot;);
&amp;nbsp; &amp;nbsp; `log(&quot;The following resolutions are supported:&quot;);

&amp;nbsp; &amp;nbsp; foreach AllResolutions(r)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; `log(&quot; &quot; $ r.PixelWidth @ &quot;x&quot; @ r.PixelHeight);
&amp;nbsp; &amp;nbsp; }
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Чтобы воспользоваться возможностями класса, нужно создать его экземпляр и вызвать функцию &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;EnumDeviceModes&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. В идеале все это делать во время инициализации игры, потому как вызвать нужно лишь один раз, а далее просто пользоваться полученными результатами.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Вместо предложенного способа, вы можете добавить представленный код, к примеру, в имеющийся UI менеджер, или куда вам заблагорассудится. Для тестирования добавим событие &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;InitGame &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;в дочернем классе от &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;GameInfo&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;var DLLDeviceInfo DeviceInfo;
event InitGame( string options, out string errorMessage )
{
    super.InitGame(options, errorMessage);
    DeviceInfo = new class&#39;DLLDeviceInfo&#39;;
    DeviceInfo.EnumDeviceModes();
}&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Наконец компилируем UDK проект и смотрим логи. Должно появиться нечто вроде:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;[0002.60] ScriptLog: Enumerating device modes...
[0002.62] ScriptLog: 16 available resolutions from 225 device modes.
[0002.62] ScriptLog: The following resolutions are supported:
[0002.62] ScriptLog: 640 x 480
[0002.62] ScriptLog: 720 x 480
[0002.62] ScriptLog: 720 x 576
[0002.62] ScriptLog: 800 x 600
[0002.62] ScriptLog: 1024 x 768
[0002.62] ScriptLog: 1152 x 864
[0002.62] ScriptLog: 1280 x 720
[0002.62] ScriptLog: 1280 x 768
[0002.62] ScriptLog: 1280 x 800
[0002.62] ScriptLog: 1280 x 960
[0002.62] ScriptLog: 1280 x 1024
[0002.62] ScriptLog: 1360 x 768
[0002.62] ScriptLog: 1366 x 768
[0002.62] ScriptLog: 1600 x 900
[0002.62] ScriptLog: 1600 x 1024
[0002.62] ScriptLog: 1680 x 1050
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Заключение&amp;nbsp;&lt;/h3&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Вы можете вместо Debug версии сделать Releaze версию. Для этого в диспетчере конфигураций выберете Releaze и перекомпилируйте - появится папка Releaze с заветной dll-кой.&amp;nbsp;

  &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Дополнительная информация:&amp;nbsp;&lt;/h3&gt;
&lt;b&gt;EnumDisplaySettings:&lt;/b&gt;
&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd162611(v=VS.85).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/dd162611(v=VS.85).aspx&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;DLLBind:&lt;/b&gt;
&lt;a href=&quot;http://udn.epicgames.com/Three/DLLBind.html&quot;&gt;http://udn.epicgames.com/Three/DLLBind.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;UPDATE
&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;

Вариант, в котором вытаскивается максимально возможное разрешения девайса(эт уже от себя). 
Функция &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;EnumDeviceModes &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;немного переписана:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;pre class=&quot;brush: cpp&quot;&gt;function vector2d EnumDeviceModes()
{
&amp;nbsp; &amp;nbsp; local Resolution r;
&amp;nbsp; &amp;nbsp; local Vector2D BestRes;
&amp;nbsp; &amp;nbsp; local int modeNum, BestmodeNum;
&amp;nbsp; &amp;nbsp; local int key;
&amp;nbsp; &amp;nbsp; local array&amp;lt;int&amp;gt; keys;

&amp;nbsp; &amp;nbsp; `log(&quot;Enumerating device modes...&quot;);

&amp;nbsp; &amp;nbsp; // Start with mode 0
&amp;nbsp; &amp;nbsp; modeNum = 0;

&amp;nbsp; &amp;nbsp; // Query device mode 0, 1, 2, ... etc. DLLEnumDisplaySettings
&amp;nbsp; &amp;nbsp; &amp;nbsp;//returns 0 when all modes have been reported
&amp;nbsp; &amp;nbsp; while( DLLEnumDisplaySettings(modeNum, r) != 0 )
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // combine width and height into a single integer &#39;key&#39;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; key = r.PixelWidth &amp;lt;&amp;lt; 16 | r.PixelHeight;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Already added this combination of width and height?
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ( keys.Find(key) == INDEX_NONE )
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Add the new resolution
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AllResolutions.Additem(r);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Add the key
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; keys.AddItem(key);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // next device mode
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; modeNum++;
&amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; // Report some useful info...
&amp;nbsp; &amp;nbsp; `log(AllResolutions.Length@&quot;available resolutions from&quot;@modeNum@&quot;device modes&quot;);
&amp;nbsp; &amp;nbsp; `log(&quot;The following resolutions are supported:&quot;);
&amp;nbsp; &amp;nbsp; foreach AllResolutions(r)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; `log(&quot; &quot; $ r.PixelWidth @ &quot;x&quot; @ r.PixelHeight);
&amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; // Start with mode 0
&amp;nbsp; &amp;nbsp; modeNum = 0;
&amp;nbsp; &amp;nbsp; while (modeNum &amp;lt; AllResolutions.Length)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(AllResolutions[BestmodeNum].PixelWidth&amp;lt;AllResolutions[modeNum].PixelWidth)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BestmodeNum = modeNum;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else if(AllResolutions[BestmodeNum].PixelHeight&amp;lt;AllResolutions[modeNum].PixelHeight&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;&amp;amp; AllResolutions[BestmodeNum].PixelWidth == AllResolutions[modeNum].PixelWidth) &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BestmodeNum = modeNum;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // next device mode
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; modeNum++;
&amp;nbsp; &amp;nbsp; }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt; &amp;nbsp; Т.е. теперь &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;EnumDeviceModes &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; будет возвращать вектор &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;BestRes&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, в котором содержится максимально высокое значение разрешения девайса. 
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/488674416661797602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/04/c-dll.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/488674416661797602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/488674416661797602'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/04/c-dll.html' title='Создание C++ DLL для получения списка допустимых разрешений экрана'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-2806038269480939607</id><published>2013-04-07T14:23:00.000-07:00</published><updated>2013-04-07T14:27:00.090-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>Мое приветствие android. Дописал аналог Hello world.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;Решил написать&lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt; Hello world &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;для android, иначе говоря, приложение фонарик, так сказать, ознакомиться с достопримечательностями платформы.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcNAwZqaXo1qGLwXy25yW2xkYVCnLxXm3WziBIoXWDh0R4PUNLHdIHnMnG50R23jClA9PRkdebaBGs3NtIHiZjIYYLBOzY4aTcjM1v2a5gUXfKX-TZ8Q7ofEZAqv4GH2WBm9PD8-DnsM51/s1600/lamp_icon_temp_2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcNAwZqaXo1qGLwXy25yW2xkYVCnLxXm3WziBIoXWDh0R4PUNLHdIHnMnG50R23jClA9PRkdebaBGs3NtIHiZjIYYLBOzY4aTcjM1v2a5gUXfKX-TZ8Q7ofEZAqv4GH2WBm9PD8-DnsM51/s1600/lamp_icon_temp_2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Эксперимент в целом удался, теоретически будет работать не только на моем относительно старом htc, но и на более современных моделях. Но так как подобных &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&quot;hello world&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; сотни, далее развивать приложение буду лишь если выяснится, что оно не столь ужасно, как мне кажется, и имеет смысл допиливать до более качественного состояния :)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ps.&lt;/b&gt; &lt;span style=&quot;color: #cccccc;&quot;&gt;Приложение с рекламой, но ее можно отключить в меню.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.vadakuma.morzeflashlight&amp;amp;feature=search_result#?t=W251bGwsMSwxLDEsImNvbS52YWRha3VtYS5tb3J6ZWZsYXNobGlnaHQiXQ..&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgggsxb02s7J_15e8jGmWv9HxHO_cV2NqjGRktZ-UquaDqwxZPCYhUCVOQPzx2qQANR7sH5FciamhFn1PgFYTaD0genZTnWeGMArHrdg3ZT-geVs0wRgpxQt5o6lZ26Ez6fNlKxOYwB5yLo/s1600/2789475.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/2806038269480939607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/04/android-hello-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/2806038269480939607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/2806038269480939607'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/04/android-hello-world.html' title='Мое приветствие android. Дописал аналог Hello world.'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcNAwZqaXo1qGLwXy25yW2xkYVCnLxXm3WziBIoXWDh0R4PUNLHdIHnMnG50R23jClA9PRkdebaBGs3NtIHiZjIYYLBOzY4aTcjM1v2a5gUXfKX-TZ8Q7ofEZAqv4GH2WBm9PD8-DnsM51/s72-c/lamp_icon_temp_2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-2989705908858223048</id><published>2013-04-07T10:52:00.001-07:00</published><updated>2013-04-16T23:55:19.563-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Управление Particle System с помощью unreal script</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
Автор: &lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;b&gt;Vadakuma&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
Используемые источники:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; UDN: &lt;a href=&quot;http://udn.epicgames.com/Three/Distributions.html&quot;&gt;Distributions&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://udn.epicgames.com/Three/UsingInstanceParameters.html&quot;&gt;UsingInstanceParameters&lt;/a&gt;&lt;br /&gt;
и исходники UT3.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Возможности UDK позволяют  управлять отдельными параметрами системы частиц через скрипты,  что бывает очень кстати.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; В этой статье я покажу, как можно  управлять количеством дыма и огня в зависимости от урона. Подразумевается, что читатель уже имеет как минимум базовые знания по UDK и unrealscript в частности, так как эта статья лишь показ идеи в целом, и некоторые простые шаги пропущены. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Буду использовать:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Particle: &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;ParticleSystem&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&#39;GenericFoliage01.Ruins.FX.P_UDK_TorchFire01&#39; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;SkeletalMesh: &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;SkeletalMesh&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&#39;FoliageDemo.Animated.SP_Bird1_SKMesh&#39;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;hr /&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;
Часть 1&lt;/h3&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Шаг 1&lt;/h3&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;Сначала необходимо настроить сам particle. Выбираем  particle в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;ContentBrowser &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и  открываем его в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Cascade&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Эффект обычно состоит из нескольких модулей,  выберем  сначала первый и  в нем  &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;Initial Size&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmprMl7RRO47dxS-9iUgtVup-q1qUkx8PUAIuw-khnzSCkc0OJrkxu4nkBnNru1BEef2kfBKpzBcFucyU9EbPVPL26Et-NcgAAp-33OQWBgDpB6rPV6hMGjgGcfLCBOJNUxYK5iIJqVxW7/s1600/0.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmprMl7RRO47dxS-9iUgtVup-q1qUkx8PUAIuw-khnzSCkc0OJrkxu4nkBnNru1BEef2kfBKpzBcFucyU9EbPVPL26Et-NcgAAp-33OQWBgDpB6rPV6hMGjgGcfLCBOJNUxYK5iIJqVxW7/s1600/0.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;В настройках жмем на треугольник напротив&lt;/span&gt; &lt;span style=&quot;color: #9fc5e8;&quot;&gt;Distribution&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и выбираем &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;DistributionVectorParticleParameter&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.   Изменяемая нами величина будет вектором, т.е. эффект можно растягивать, расширять, или наоборот сужать размеры более гибким образом, нежели при использовании лишь  одного числового параметра. (Учтите, если до этого параметр был настроен, то  проделав описанную процедуру, все сбросится!)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBswQPq4IgaZInrlJEOnlKb8w_piM3eInqqNPYG1kR57R6Ys_Z4rwLp2f-ybW0lE0levEd6suvtPFiIBooJIqoAUnAUWfTSKZlLcPVtdTNMUQMj0kx5qekP22ZdOxxBJoWaNbY-XuTbCPJ/s1600/1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;132&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBswQPq4IgaZInrlJEOnlKb8w_piM3eInqqNPYG1kR57R6Ys_Z4rwLp2f-ybW0lE0levEd6suvtPFiIBooJIqoAUnAUWfTSKZlLcPVtdTNMUQMj0kx5qekP22ZdOxxBJoWaNbY-XuTbCPJ/s400/1.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Окно настроек изменится:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3RDvCjtgIQXtbh2f5B-xJ7E-5zWjegwZY-FQm_qox4uZWSq0HFpn5kokeVb7xkFwWta0rvjP1bVpCAf8B2bgn2nEs_1QcyJC4jUq6ULA9he8l0dpvi5gmPXbCwlFbleXYGBF57QDEXN5z/s1600/3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;197&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3RDvCjtgIQXtbh2f5B-xJ7E-5zWjegwZY-FQm_qox4uZWSq0HFpn5kokeVb7xkFwWta0rvjP1bVpCAf8B2bgn2nEs_1QcyJC4jUq6ULA9he8l0dpvi5gmPXbCwlFbleXYGBF57QDEXN5z/s400/3.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Шаг 2&lt;/h3&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;b&gt;1.&lt;/b&gt; &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;    Чтобы к этому параметру можно было обратиться из кода, необходимо задать &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Parameter Name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;b&gt;2-3.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Вписать необходимый диапазон изменения размеров эффекта.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;b&gt;4.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;    Специально оставлено &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;DPM_Normal&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. В таком режиме когда из кода приходит относительное значение от&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;0 до 1 (указано в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;MinInput/MaxInput&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;), сам  параметр будет меняться в диапазоне указанном в&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;MinOutput/MaxOutput&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;b&gt;5.&lt;/b&gt; &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;   Какое относительное значение параметра будет использоваться по умолчанию при активации эффекта. (1 – берется максимальное значение)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWst9nnaENcw3QjtwZ56XaH4Qq8lT2SGKEG59XFflJ2kbJybxIaFbi2w0M4I6YDU8anIKi_RAzf_FHe89MkeJB3ycu13vUvEzkx7eaUrM4CIiJ87wuWczKyAzsNnLwLZXeZ6CdMj75VGgM/s1600/2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWst9nnaENcw3QjtwZ56XaH4Qq8lT2SGKEG59XFflJ2kbJybxIaFbi2w0M4I6YDU8anIKi_RAzf_FHe89MkeJB3ycu13vUvEzkx7eaUrM4CIiJ87wuWczKyAzsNnLwLZXeZ6CdMj75VGgM/s400/2.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Шаг 3&lt;/h3&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt; Туже процедуру необходимо проделать с оставшимися модулями. В них можно указать тот же  &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Parameter Name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; что и в первом модуле, тогда  изменение параметра &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Size &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;будет происходить в нескольких модулях, т.е. можно управлять размером  дыма даже если он состоит из составных частей.  &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Все тоже самое проделать с модулями, отвечающими за огонь,  разве что сменить &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Parameter Name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; на соответствующее имя, если есть потребность управлять огнем отдельно от дыма.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Примечание&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;: процедура была выполнена с векторным параметром, из кода тоже будет приходить векторный параметр. Если управляемый параметр не векторный, ничего не меняется, изменится лишь тип. К примеру, если параметр - это просто значение с плавающей запятой, тогда тип  - float, и выбирать надо будет  &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;DistributionFloatParticleParameter&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.   &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;hr /&gt;
&lt;h3&gt;
Часть 2&lt;/h3&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
Шаг 4&lt;/h3&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;Теперь разберемся в коде.  Алгоритм управления взят из исходников UT3, здесь есть отличия, но сама суть остается неизменной.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Для примера создадим класс &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;Pawn&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;,  который будет загораться,  при нанесении достаточного урона и огонь с дымом будут увеличиваться  при большем уроне. При нанесении урона (событие  &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;TakeDamage&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;) срабатывает функция &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;CheckDamageSmoke()&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, которая проверяет, на сколько мало отношение Жизнь/МаксЖизнь, и если порог &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;DamageSmokeThreshold &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;пройден, активируется и аттачится к сокету &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;BirdHead &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; эффект пожара(по тегу &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;DamageSmoke&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;) в &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;CreatePawnEffect()&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, далее количество огня корректируется через &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;SetPawnEffectParms()&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; при каждом последующим получении урона.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: cpp&quot;&gt;class CPSAnotherPawn extends GamePawn;

// порог после прохождения которого начнется возгорание.
var float DamageSmokeThreshold;

/**************************************************************************
&amp;nbsp;Pawn Effects
************************************************************************ */

/** Структура содержащая необходимые параметры для управления*/
struct &amp;nbsp;PawnEffect
{
&amp;nbsp; &amp;nbsp; /** Тег для активации эффекта */
&amp;nbsp; &amp;nbsp; var() name EffectStartTag;
&amp;nbsp; &amp;nbsp; /** Тег для выключения эффекта */
&amp;nbsp; &amp;nbsp; var() name EffectEndTag;
&amp;nbsp; &amp;nbsp; /** Если необходимо перезапустить particle */
&amp;nbsp; &amp;nbsp; var() bool bRestartRunning;
&amp;nbsp; &amp;nbsp; /** Template to use */
&amp;nbsp; &amp;nbsp; var() ParticleSystem EffectTemplate;
&amp;nbsp; &amp;nbsp; /** Названия сокета для присоединения */
&amp;nbsp; &amp;nbsp; var() name EffectSocket;
&amp;nbsp; &amp;nbsp; /** The Actual PSC */
&amp;nbsp; &amp;nbsp; var ParticleSystemComponent EffectRef;

&amp;nbsp; &amp;nbsp; structdefaultproperties
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bRestartRunning=true;
&amp;nbsp; &amp;nbsp; }
};
/** массив с эффектами и данными необходимыми для управления */
var(Effects) array&amp;lt;pawneffect&amp;gt;PawnEffects;

/**
* Проверка достаточно ли поврежден pawn для того чтобы начать гореть.
*/
simulated function CheckDamageSmoke()
{
&amp;nbsp; &amp;nbsp; Local float Pct;

&amp;nbsp; &amp;nbsp; Pct = (float(Health) / float(HealthMax);&amp;nbsp;
&amp;nbsp; &amp;nbsp; // для примера, если наша птичка убита, дым отключится.
&amp;nbsp; &amp;nbsp; PawnEvent( Pct &amp;amp;lt; DamageSmokeThreshold &amp;amp;amp;&amp;amp;amp; Health &amp;amp;gt; 0) ? &#39;DamageSmoke&#39; : &#39;NoDamageSmoke&#39;);
}


/**
* An interface for causing various events on the vehicle.
*/
simulated function PawnEvent(name EventTag)
{
&amp;nbsp; &amp;nbsp; // Включаем или выключаем эффекты
&amp;nbsp; &amp;nbsp; TriggerPawnEffect(EventTag);

&amp;nbsp; &amp;nbsp; // Play any animations
&amp;nbsp; &amp;nbsp; //PlayPawnAnimation(EventTag);
&amp;nbsp; &amp;nbsp; //PlayPawnSound(EventTag);
}


/**
* Активирует или деактивирует эффекты
* param &amp;nbsp; &amp;nbsp;EventTag &amp;nbsp; &amp;nbsp;тег указывающий на конкретный эффект
*/
simulated function TriggerPawnEffect(name EventTag)
{
&amp;nbsp; &amp;nbsp; local int i;

&amp;nbsp; &amp;nbsp; for (i = 0; i &amp;amp;lt; PawnEffects.length; i++)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // находим эффект по тегу, с которым надо отработать
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (PawnEffects[i].EffectStartTag == EventTag)&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (PawnEffects[i].EffectRef == None) &amp;nbsp;// если не создан, создаем
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CreatePawnEffect(i);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (PawnEffects[i].bRestartRunning) &amp;nbsp;// если надо, перезапускаем
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PawnEffects[i].EffectRef.KillParticlesForced();
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PawnEffects[i].EffectRef.ActivateSystem();
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else if (!PawnEffects[i].EffectRef.bIsActive) // если не активен, включаем
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PawnEffects[i].EffectRef.ActivateSystem();
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // начинаем менять параметры
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SetPawnEffectParms(EventTag, PawnEffects[i].EffectRef);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Если эффект действует, а тэг стоит на выключении - выключаем
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else if (PawnEffects[i].EffectRef != None &amp;amp;amp;&amp;amp;amp; PawnEffects[i].EffectEndTag == EventTag)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PawnEffects[i].EffectRef.DeActivateSystem();
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; }
}


/**
* После активации какого-либо эффекта, вызывается эта функция, для корректировки&amp;nbsp;
* параметров.
* @param &amp;nbsp; &amp;nbsp;TriggerName &amp;nbsp; тег говорящий, какой именно эффект был активирован
* @param &amp;nbsp; &amp;nbsp;PSC &amp;nbsp; &amp;nbsp; Particle System component связанный с эффектом
*/
simulated function SetPawnEffectParms(name TriggerName, ParticleSystemComponent PSC)
{
&amp;nbsp; &amp;nbsp; local float Pct;
&amp;nbsp; &amp;nbsp; local vector ratioVect;

&amp;nbsp; &amp;nbsp; if (TriggerName == &#39;DamageSmoke&#39;)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* домножено на DamageSmokeThreshold, чтобы Pct изменялся от 1 до 0. ||1 - &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; небольшой пожар. 0-максимально возможный. Без умножения &amp;nbsp;Pct изменялся от&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DamageSmokeThreshold до 0, т.е. эффект начинает работать не с минимального&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; значения*/
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Pct = float(Health) / (float(HealthMax)*DamageSmokeThreshold); &amp;nbsp;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ratioVect.X = (1 - Pct);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ratioVect.Y = (1 - Pct);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ratioVect.Z = (1 - Pct);

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PSC.SetVectorParameter(&#39;smokeamount&#39;, ratioVect);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PSC.SetVectorParameter(&#39;fireamount&#39;, ratioVect);
&amp;nbsp; &amp;nbsp; }
}


/**
* Создаем новый эффект
*/
simulated function CreatePawnEffect(int EffectIndex)
{
&amp;nbsp; &amp;nbsp; PawnEffects[EffectIndex].EffectRef = new(self) class&#39;UDKParticleSystemComponent&#39;;
&amp;nbsp; &amp;nbsp; PawnEffects[EffectIndex].EffectRef.SetTemplate(PawnEffects[EffectIndex].EffectTemplate);

&amp;nbsp; &amp;nbsp; // присоединяем созданный эффект к мешу павна
&amp;nbsp; &amp;nbsp; if(PawnEffects[EffectIndex].EffectSocket != &#39;None&#39;)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mesh.AttachComponentToSocket(PawnEffects[EffectIndex].EffectRef, PawnEffects[EffectIndex].EffectSocket);
}


/**
* @See Actor.TakeDamage()
*/
simulated event TakeDamage(
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int Damage,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Controller EventInstigator,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vector HitLocation,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vector Momentum,&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;class&amp;lt;damagetype&amp;gt; DamageType,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;optional TraceHitInfo HitInfo,&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;optional Actor DamageCauser
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;)
{
&amp;nbsp; &amp;nbsp; Super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser);

&amp;nbsp; &amp;nbsp; CheckDamageSmoke();
}


defaultproperties
{
&amp;nbsp; &amp;nbsp; DamageSmokeThreshold = 0.85

&amp;nbsp; &amp;nbsp; Begin Object Class=SkeletalMeshComponent Name=InitialSkeletalMesh&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CastShadow=true
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bCastDynamicShadow=true
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bOwnerNoSee=false
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BlockRigidBody=true;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CollideActors=true;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BlockZeroExtent=true;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BlockNonZeroExtent=TRUE
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bIgnoreControllersWhenNotRendered=TRUE
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bUpdateSkelWhenNotRendered=FALSE
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SkeletalMesh=SkeletalMesh&#39;FoliageDemo.Animated.SP_Bird1_SKMesh&#39;
&amp;nbsp; &amp;nbsp; End Object
&amp;nbsp; &amp;nbsp; Mesh=InitialSkeletalMesh;
&amp;nbsp; &amp;nbsp; Components.Add(InitialSkeletalMesh);


&amp;nbsp; &amp;nbsp; // Вписываем набор эффектов
&amp;nbsp; &amp;nbsp; PawnEffects.Empty
&amp;nbsp; &amp;nbsp; PawnEffects(0)=(
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EffectStartTag=DamageSmoke,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EffectEndTag=NoDamageSmoke,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bRestartRunning=false,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EffectTemplate=ParticleSystem&#39;GenericFoliage01.Ruins.FX.P_UDK_TorchFire01&#39;,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EffectSocket=BirdHead
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;)
}&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; В функции &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;SetPawnEffectParms()&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; передача текущего значения настроенным в редакторе эффектов параметрам  происходит через  указание их имен, в нашем случае это &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;smokeamount &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;и &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;fireamount&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Чем меньше соотношение  Жизнь/МаксЖизнь, тем большее значение (в нашем до 1.0) отсылается в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;particlesystem&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, тем самым вызывая увеличение дыма и огня.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;Примечание&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;: отмечу, что использовался &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;skeletal mesh&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; птички с созданным одним сокетом, с названием &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;BirdHead&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. По умолчанию у этого скелетал меша нет сокетов! &lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjykMxGxDoRDeXHJp5FL3_E901IZReSpIo5c5S0XqAURID-pqEdN6XilosKeyJH3ntDHlbA3DagSEuSEBnb_BBZGU-mFZyReMZddRKJ2kBIChVos_4vLDqHszVe6X7KtROyrRT37-Ki7Xt3/s1600/4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;223&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjykMxGxDoRDeXHJp5FL3_E901IZReSpIo5c5S0XqAURID-pqEdN6XilosKeyJH3ntDHlbA3DagSEuSEBnb_BBZGU-mFZyReMZddRKJ2kBIChVos_4vLDqHszVe6X7KtROyrRT37-Ki7Xt3/s400/4.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Видео с полученным результатом:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/8PM63KjaVg4?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;В исходниках реализована простая проверка контроля:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: cpp&quot;&gt;class CPSPlayerController extends GamePlayerController;

var Pawn SP;

exec function SpawnBird()
{
&amp;nbsp; &amp;nbsp; SP = spawn(class&#39;CPSAnotherPawn&#39;,,,Location + vect(350,350, 250));
}


exec function BirdStrike()
{
&amp;nbsp; &amp;nbsp; local &amp;nbsp;class&amp;lt;damagetype&amp;gt; DamageType;

&amp;nbsp; &amp;nbsp; DamageType = class&#39;DamageType&#39;;
&amp;nbsp; &amp;nbsp; SP.TakeDamage(10, self, SP.Location, SP.Location,DamageType,,);
&amp;nbsp; &amp;nbsp; ClientMessage(&quot;Bird Health:&quot;@SP.Health);
}

defaultproperties&amp;nbsp;
{

}&lt;/pre&gt;
&amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; В классе &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;CPSPlayerController &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;прописаны exec функции, которые можно вызвать через консоль. SpawnBird - рождается птичка.  &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;BirdStrike &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;- &quot;бъем&quot; по созданной птичке нанося урон.&lt;br /&gt;   Так же в  архиве находится пакет с измененным эффектом и птичкой с добавленным сокетом.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://docs.google.com/file/d/0B0KnHGXDpCCgcjgxcXpKYjZHeG8/edit?usp=sharing&quot;&gt;Исходники&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #bf9000;&quot;&gt;PS.&lt;/span&gt; &lt;span style=&quot;color: #cccccc;&quot;&gt;Пишите, если в предложенном материале обнаружили ошибки, недочеты, и т.д. - исправлю.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/2989705908858223048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/04/particle-system-unreal-script.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/2989705908858223048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/2989705908858223048'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/04/particle-system-unreal-script.html' title='Управление Particle System с помощью unreal script'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmprMl7RRO47dxS-9iUgtVup-q1qUkx8PUAIuw-khnzSCkc0OJrkxu4nkBnNru1BEef2kfBKpzBcFucyU9EbPVPL26Et-NcgAAp-33OQWBgDpB6rPV6hMGjgGcfLCBOJNUxYK5iIJqVxW7/s72-c/0.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-1436956546363045624</id><published>2013-04-07T10:44:00.001-07:00</published><updated>2013-04-14T04:43:11.415-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Меняем персонажа в процессе игры в UDK</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;По упомянутой просьбе на сайте решил немного поизучать вопрос переключения у игрока стандартного меша.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; В играх, где есть несколько персонажей и необходимо переключаться между ними, или же на каждый уровень приходится свой персонаж, придется озаботится этим вопросом.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; К делу. В итоге скопилось целых три способа(и скорее всего еще столько же можно придумать(найти))&amp;nbsp;и все как обычно: легкий,легкий и ... легкий. Начнем для разминки с легкого...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Здесь представлены только собственные классы &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;SM_PlayerController&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, потому как основные добавления происходят в этих классах. Полные версии скриптов, готовые для компиляции находятся в архиве, который можно скачать по ссылке в конце статьи. &lt;/span&gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Простая замена меша игрока во время игры.&lt;/h3&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt; Суть заключается в том, что у игрока по триггеру заменяется меш, материал, анимсэты, и анимтемплейт.&amp;nbsp;Причем, если между старым и новым видом разница только в самом меше и материалах(т.е. анимация и&amp;nbsp;анимтемплейт у них одинаковы),значит нужно будет просто заменить сам меш и материалы.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; При этом не меняется сам класс &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;Pawn&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, что пожалуй не есть гуд. Конечно можно напихать различных&amp;nbsp;функций также переключающихся между собой, если какие-то свойства координально отличаются от старого&amp;nbsp;персонажа... &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Для примера создал спец блок для кисмета, при срабатывании которого и будет происходить, столь&amp;nbsp;вожделенные события. Напомню, что все на достаточно примитивном уровне, без изысков и &amp;nbsp;спецэффектов - быстрая спартанская смена меша. При достаточной сноровке переходный процесс&amp;nbsp;можно или спрятать или скрасить. Конечно же можно назначить смену pawn на какую нибудь кнопку,&amp;nbsp;действие и т.д. алгоритм в целом не поменяется.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;класс&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;SM_PlayerController&lt;/span&gt;:&lt;br /&gt;
&lt;pre class=&quot;brush: cpp&quot;&gt;class SM_PlayerController extends GamePlayerController;

var SkeletalMesh Changemesh;
var MaterialInterface ChangeMaterial0;
var AnimTree ChangeAnimTree;
var array&amp;lt;animset&amp;gt; ChangeAnimSet;
var AnimNodeSequence ChangeAnimSeq;
var PhysicsAsset ChangePhysicsAsset;
var bool SwitchMesh;


simulated event PostBeginPlay()

{
    super.PostBeginPlay();
    //`log(&amp;quot;SM_PlayerController&amp;quot;);
}

// вызывается из кисмета и  поменяет перса.
function SwitchPerson(bool Allowed)
{
    SwitchMesh = Allowed;
    if(SwitchMesh)   
    {
        SwitchMesh = FALSE        // Сначала  прописываем на какой именно меш будем менять, для примера взять      
     // стандартный  меш IronGuard
        ChangeMesh=SkeletalMesh&#39;CH_IronGuard_Male.Mes h.SK_CH_IronGuard_MaleA&#39;
        ChangeAnimTree=AnimTree&#39;CH_AnimHuman_Tree.AT_ CH_Human&#39;;
        ChangeAnimSet[0]=AnimSet&#39;CH_AnimHuman.Anims.K_AnimHuman_AimOffset&#39;;
        ChangeAnimSet[1]=AnimSet&#39;CH_AnimHuman.Anims.K_AnimHuman_BaseMale&#39;;
        ChangePhysicsAsset=PhysicsAsset&#39;CH_AnimCorrup t.Mesh.SK_CH_Corrupt_Male_Physics&#39;;
        // Затем поочередно применяем 
        self.Pawn.Mesh.SetSkeletalMesh(ChangeMesh);
        self.Pawn.Mesh.SetMaterial(0,MaterialInstanceConstant&#39;CH_IronGuard_Male.Materials.MI_CH_IronG_MHead01_V01&#39;);
        self.Pawn.Mesh.SetMaterial(1,MaterialInstanceConstant&#39;CH_IronGuard_Male.Materials.MI_CH_IronG_Mbody01_V01&#39;);
        /* !! Понадобится если будете менять на перса у которого другая анимация  и физика */
        //self.Pawn.Mesh.SetPhysicsAsset(ChangePhysicsAsset);
        //self.Pawn.Mesh.AnimSets=ChangeAnimSet;
        //self.Pawn.Mesh.SetAnimTreeTemplate(ChangeAnimTree);
    }
}

defaultproperties 
{
    SwitchMesh = FALSE
}&lt;/pre&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Полная замена pawn на другой, только что вызванный.&lt;/h3&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;Принцип в этот раз несколько другой. По пунктам: отключаем pawn от контроллера игрока - удаляем его - вызываем новый pawn - подключаем к нему контроллер&amp;nbsp;игрока. Здесь сделано так же, так что это дело происходит по спец. блоку из кисмета, например, по триггеру.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;класс&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;SM2_PlayerController&lt;/span&gt;:&lt;br /&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;class SM2_PlayerController extends GamePlayerController
var bool SwitchPawn;

simulated event PostBeginPlay()
{
    super.PostBeginPlay();
    //`log(&quot;SM2_PlayerController&quot;);
}

// вызывается из кисмета и  поменяет перса.
function SwitchPerson(bool Allowed)
{
    Local Pawn ReserveBeef;
    Local vector Loc;
    SwitchPawn = Allowed;
    if(SwitchPawn)
    {
         SwitchPawn = FALSE;
         //Запоминаем текущий pawn
         ReserveBeef = Pawn;
         // Запоминаем его расположение
         Loc = Pawn.Location;
         // отсоединяем текущий pawn
         UnPossess();
         // Уничтожаем отсоединенный pawn
         ReserveBeef.Destroy();
         //Вызываем новый pawn
         ReserveBeef = Spawn(class&#39;SM2_AnotherPawn&#39;, ,, Loc + vect(50,0,50));
         // Присоединяем новый pawn
         Possess(ReserveBeef,false);
    }
     
}


defaultproperties 
{
    SwitchPawn = FALSE 
}&lt;/pre&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Переключение между двумя различными pawn&lt;/h3&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; На уровне появляются сразу два меша, один под котролем AI. По спец блоку из кисмета происходит&amp;nbsp;обмен между ними мешами - переключение котроллеров.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; По принципу этот способ такой же как и предыдущий. Его пункты таковы:&amp;nbsp;отключаем меши от контроллеров - переназначаем котроллеры другим мешам.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;класс&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;SM3_PlayerController&lt;/span&gt;:&lt;br /&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;class SM3_PlayerController extends GamePlayerController;
var   bool    SwitchPawn;
var   Pawn   ReserveBeef;

simulated event PostBeginPlay()
{
    // Вызываем другой pawn, по умолсчанию он под AI Controller 
    ReserveBeef = Spawn(Class&#39;SM3_AnotherPawn&#39;,,, Location - vect(100,0,0) , Rotation);
    super.PostBeginPlay();
}

// Вызывается из кисмета и говорит что можно поменять перса.
function SwitchPerson(bool Allowed)
{
    Local Controller Cont;
    Local Pawn OldPawn;
    SwitchPawn = Allowed;
    if(SwitchPawn == TRUE)
    {
        SwitchPawn = FALSE;
        //Запоминаем текущий pawn 
        OldPawn = Pawn;
        //Запоминаем AI Controller  того  pawn куда переселимся
        Cont = ReserveBeef.Controller;
        //Отсоединяем наш старый  pawn
        UnPossess();
        //Отсоединяем новый  pawn от AI Controller
        Cont.UnPossess();
        //Присоединяемся
        Possess(ReserveBeef, false);
        //Старый pawn ставим под контроль AI Controller 
        Cont.Possess(OldPawn, false);
    }
}

defaultproperties 
{
    SwitchPawn = FALSE
}&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Результат на видео:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;451&quot; src=&quot;http://www.youtube.com/embed/rDuvE_AVFnE?hl=ru&amp;amp;fs=1&quot; width=&quot;550&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;table style=&quot;background-color: #000005; color: #a199b8; font-family: Tahoma, Verdana, &#39;Century gothic&#39;, Arial, sans-serif; font-size: 13px; line-height: 24px; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://docs.google.com/file/d/0B0KnHGXDpCCgUXZWYWFpa1dSUGs/edit?usp=sharing&quot;&gt;&lt;b&gt;Скачать все три способа&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Все три способа можно неплохо довести до ума, &amp;nbsp;например сделать взаимно обратной переключения по клавише между двумя героями.&amp;nbsp;Так что все в ваши руках.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #bf9000;&quot;&gt;PS&lt;/span&gt;. &lt;span style=&quot;color: #cccccc;&quot;&gt;Все делалось в мартовской версии UDK(2011).&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/1436956546363045624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/04/udk_7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/1436956546363045624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/1436956546363045624'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/04/udk_7.html' title='Меняем персонажа в процессе игры в UDK'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/rDuvE_AVFnE/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-898229738636967057</id><published>2013-04-07T10:40:00.000-07:00</published><updated>2013-04-07T10:40:20.024-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Делаем меню как в Mass Effect</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Хотел по началу написать полностью свою статью, но поискав в просторах интернета информацию об этом деле, обнаружил что все расписано как надо и нет смысла изобретать велосипед второй раз. Поэтому решил перевести одну из подобных статей, которая должна, по идее, многим помочь в ходе изучения scaleform и flash.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Перевод: &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Vadakuma&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Источник:&amp;nbsp;&lt;a href=&quot;http://forums.epicgames.com/threads/736432-Mass-Effect-style-Interaction-system&quot; target=&quot;_blank&quot;&gt;Mass Effect style iteraction system&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;Я создал на флеше систему  меню, по стилю, как меню в игре &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Mass Effect&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. В случае, если вам требуется добавить  интерактивную менюшку в игру, можете использовать эту систему.&amp;nbsp;Всего 3 класса которые необходимо создать :&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;1)      &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;GFxUI_Interaction&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; – добавляет параметры  SWF movie, определяет какие параметры были задействованы.&lt;br /&gt;2)      &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;SeqAction_BeginInteraction&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; – активирует  через &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Kismet &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;меню, с шестью интерактивными кнопками.&lt;br /&gt;3)      &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;SeqEvent_OptionSelected&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; – события происходящие при нажатии на кнопку.&lt;br /&gt;&lt;br /&gt;В архиве написаны эти скрипты, и все что вам осталось сделать, это переместить их по адресу :&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Development\YourGame\Classes\&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;br /&gt;прокомпилировать, и запустить редактор.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Для начала стоит убрать HUD и видео, запускающиеся при старте обычного типа игры, также вам следует создать &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;sub-sequence(&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;отдельное &quot;окошко&quot; в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;kismet&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, специально для этой системы меню, чтобы &amp;nbsp;отделить ее от всего остального&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, поскольку так будет проще управлять системой взаимодействия.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Внутри &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;sub-sequence&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; создайте a &lt;/span&gt;&lt;span style=&quot;color: #7f6000;&quot;&gt;Sequence Activated node&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;как-нибудь&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;его&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;назовите. Далее следует создать &lt;/span&gt;&lt;span style=&quot;color: #7f6000;&quot;&gt;Begin Interaction node&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; (находится в &lt;/span&gt;&lt;span style=&quot;color: #7f6000;&quot;&gt;New Action&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #7f6000;&quot;&gt; Interaction&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #7f6000;&quot;&gt;BeginInteraction&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Добавьте переменную &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Player&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и новую (именованную) объектную переменную для &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Movie&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, как показано на скриншоте. После проигрывания первого действия, вы можете подключить новый &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Matine&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; с новым действием. Следуя этому, вы можете создать неактивное зацикливание (пока ожидается нажатие кнопки ) подобно меню из &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Mass Effect&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG-l-pa46EXPbWy8SfsBIIm8wLooRQr4oOAGRi1xtFD5QVoJZ6Y501bB2ucGQcVUNXXwRoXdlkc6pqOd9F_dFlj06pJT9HVYcOyjcRhGn9RGPK8db9_8XpIT_8c6gR_u7EeQMSNDkOIFOX/s1600/Scaleform-Mass_Effect_Begin_Interaction.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;177&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG-l-pa46EXPbWy8SfsBIIm8wLooRQr4oOAGRi1xtFD5QVoJZ6Y501bB2ucGQcVUNXXwRoXdlkc6pqOd9F_dFlj06pJT9HVYcOyjcRhGn9RGPK8db9_8XpIT_8c6gR_u7EeQMSNDkOIFOX/s400/Scaleform-Mass_Effect_Begin_Interaction.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Внутри  &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Begin Interaction node&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, вы должны лишь заполнить поле &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Interaction ID&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и шесть полей (название кнопок кажись). В принципе, эти поля являются дополнительными.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Примечание&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;:  Я обозвал каждую кнопку как в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Mass Effect&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, вы можете назвать их по своему, только используйте сокращенные названия. На самом деле ограничения по длине похоже нету. Заполните поля как скриншоте:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS4F5_zP2mVfLNYNz-HrPJPRlDldpUK4ycdNws-GSyOS_U-lAfNA57znNaNiUEFXuviiGhMKxGJbiPSJSRTmXDru07rhy_xCU5hWhAWZBFbN3_FloQhaGKTxyZG-OtADhyphenhyphennsOy6gZ9xrvB/s1600/Scaleform-Mass_Effect_Fill_options.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;95&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS4F5_zP2mVfLNYNz-HrPJPRlDldpUK4ycdNws-GSyOS_U-lAfNA57znNaNiUEFXuviiGhMKxGJbiPSJSRTmXDru07rhy_xCU5hWhAWZBFbN3_FloQhaGKTxyZG-OtADhyphenhyphennsOy6gZ9xrvB/s400/Scaleform-Mass_Effect_Fill_options.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Кнопки 0-2 справа, а кнопки 3-5  слева. Вы можете оставить поля пустыми, тогда кнопки не будут активными. Нет никакой надобности использовать все шесть кнопок. Если вы захотите сделать три кнопки справа, то полей&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt; interaction options&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; тоже будет три.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Следующая вещь, которой стоит заняться, это определить какие события будут происходить при нажатии той или иной кнопки. Создадим шесть событий (‘&lt;/span&gt;&lt;span style=&quot;color: #7f6000;&quot;&gt;New Event&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #7f6000;&quot;&gt;Interaction&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #7f6000;&quot;&gt;InteractionOptionSelected&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;’).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXPy-teQXE0ZP_sY7NhMmf_Q3235n72oCa7JQHvHJ1koBg7oCZEXfPqmGxJlnMHYcHUZMiAfEos2C0g1MmiXoHsLQXw0fYpNUkN_5dwJwAeeQPsxVMrNdd5XtMa4CeuNwwR08H7BTNxsHX/s1600/Scaleform-Mass_Effect_Events.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;223&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXPy-teQXE0ZP_sY7NhMmf_Q3235n72oCa7JQHvHJ1koBg7oCZEXfPqmGxJlnMHYcHUZMiAfEos2C0g1MmiXoHsLQXw0fYpNUkN_5dwJwAeeQPsxVMrNdd5XtMa4CeuNwwR08H7BTNxsHX/s400/Scaleform-Mass_Effect_Events.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; В каждом событии потребуется настроить два параметра  - &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;ID &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;события (идентификатор, который вы написали в узле ‘&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;BeginInteraction&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;’), и номер кнопки, при нажатии на которую будет происходить это событие. Настроить следует так, как показано на скриншоте:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXTaLtJTDHy-wcSfhtWGRt7xNqa-hKXWGIbL5T6h6uGG1NdfnK9nsnY0KkxpomS15q8GShnagzMCuHW0e9LO12NH9NOS2tbgblVGxTHbiBAfjJUpImhdn0ePbVf1Cmjn7Sjrm0NFPe5nEf/s1600/Scaleform-Mass_Effect_Selected_Event.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXTaLtJTDHy-wcSfhtWGRt7xNqa-hKXWGIbL5T6h6uGG1NdfnK9nsnY0KkxpomS15q8GShnagzMCuHW0e9LO12NH9NOS2tbgblVGxTHbiBAfjJUpImhdn0ePbVf1Cmjn7Sjrm0NFPe5nEf/s400/Scaleform-Mass_Effect_Selected_Event.jpg&quot; width=&quot;337&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3&gt;
&lt;br /&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Заключительные комментарий&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Каждое из событий должно уметь&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;завершать/&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;останавливать видео или анимацию(персонажей, или самого меню), которые показывались до выбора следующего пункта меню. Блок, находящейся слева от блоков событий, как раз отвечает за это.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; В итоге к каждому из блоков событий можно прикрепить любые действия, какие вы только захотите, после чего все должно прийти в конечный узел - ‘&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Finished Sequence&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;’ node, который может быть полезен, если вы захотите создать систему взаимодействий между опциями.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Также вы можете подключиться к конечному блоку ‘&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Finished Sequence&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;’ node сразу после того как опция была выбрана и дальше открыть новую последовательность опций (кнопок) – подобно тому как сделано в &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Mass Effect&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Аналогично, вы можете добавить опцию ‘&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Return&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;’, чтобы возвратиться к предыдущему меню.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Чтобы создать новое подменю, необходимо всего лишь скопировать подпоследовательность  &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;sub-sequence&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и изменить &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;ID&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; кнопок на новое значение. &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;ID&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; можно менять сразу для группы кнопок и опций.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Используя эти&lt;/span&gt;&lt;b&gt;  &lt;a href=&quot;https://docs.google.com/file/d/0B0KnHGXDpCCgRE9zY3pLUkhqSms/edit?usp=sharing&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;исходники&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;вы можете легко создавать системы меню не хуже чем  меню в игре &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;Mass Effect&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Скриншот для  примера возможностей :&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSgK3HwSGe1TUsW7dn_NNn5wLOwIuwoBKLSo244bh8cRXfDjRyJgCthI5cQZaFQCcKt66ENT9AIsqEgtUJElufyr7kMcqdul1NFoDox9WbkvpuQTCBEZGyz29OvRCxZ7IVlTI_b9MF_zx1/s1600/Scaleform-Mass_Effect_LastExampleScreenshot.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;176&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSgK3HwSGe1TUsW7dn_NNn5wLOwIuwoBKLSo244bh8cRXfDjRyJgCthI5cQZaFQCcKt66ENT9AIsqEgtUJElufyr7kMcqdul1NFoDox9WbkvpuQTCBEZGyz29OvRCxZ7IVlTI_b9MF_zx1/s400/Scaleform-Mass_Effect_LastExampleScreenshot.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; В архиве находятся необходимые скрипты, флеш меню и простенькая карта, для проверки работоспособности. Все было сделано в майской версии UDK(2010).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #783f04;&quot;&gt;&lt;b&gt;PS&lt;/b&gt;.&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; Если у Вас установлена июньская версия(2010), то необходимо удалить строку &#39;&lt;/span&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;bGammaCorrection&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&#39; из &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;DefaultProperties &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;в скриптах &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;GFxUI_Interaction.uc&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;SeqAction_BeginInteraction.uc&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Спасибо за внимание. &quot;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/898229738636967057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/04/mass-effect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/898229738636967057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/898229738636967057'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/04/mass-effect.html' title='Делаем меню как в Mass Effect'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG-l-pa46EXPbWy8SfsBIIm8wLooRQr4oOAGRi1xtFD5QVoJZ6Y501bB2ucGQcVUNXXwRoXdlkc6pqOd9F_dFlj06pJT9HVYcOyjcRhGn9RGPK8db9_8XpIT_8c6gR_u7EeQMSNDkOIFOX/s72-c/Scaleform-Mass_Effect_Begin_Interaction.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-5736782437449893310</id><published>2013-04-07T10:39:00.000-07:00</published><updated>2013-04-07T10:39:26.488-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Огнестрельное оружие в UDK - Основы</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Автор: &lt;a href=&quot;http://www.moug-portfolio.info/&quot;&gt;Mougli&lt;/a&gt;&lt;br /&gt;
Перевод: &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Vadakuma&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Оригинал: &lt;a href=&quot;http://www.moug-portfolio.info/index.php?page=weapons---basics&quot;&gt;Оружие - Основы&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;
&lt;h2&gt;
Вступление&lt;/h2&gt;
&lt;/div&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Сегодня мы будем говорить о базовых знаниях и настройках касающиеся создания оружия.&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://udn.epicgames.com/Three/WeaponsTechnicalGuide.html&quot;&gt;UDN Weapon System Technical Guide&lt;/a&gt; &lt;span style=&quot;color: #cccccc;&quot;&gt;(которую я называю &lt;b&gt;WSTG&lt;/b&gt;) дает нам некоторые понятия: как работает механизм переключения оружия, как работает блок отвечающий за режим огня (даже по сети), в чем разница между функциями в классе&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;Weapon &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;и  его дочерних классов.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Страничка&lt;/span&gt; &lt;a href=&quot;http://udn.epicgames.com/Three/SettingUpWeapons.html&quot;&gt;Setting Up Weapons&lt;/a&gt; &lt;span style=&quot;color: #cccccc;&quot;&gt;рассказывает нам как смоделировать и импортировать оружие,  и какой код&amp;nbsp;надо написать... для &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;UTWeapons&lt;/span&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;И все же, после прочтения всего этого, мы до сих пор не знаем некоторые вещи:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;• Как добавить оружие в стандартный инвентарь.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;• Установить различные виды выстрелов для оружия.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;• Какие функции необходимо переписать чтобы управлять некоторыми характеристиками оружия.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;• Как работает система урона.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp;Говоря о системе урона, думаю, эта тема заслуживает отдельного учебника (вместе с огнестрельными  снарядами), поэтому я не буду затрагивать этот вопрос здесь.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;h4&gt;
Исходная точка: InventoryManager&lt;/h4&gt;
&lt;/div&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Как мы уже говорили, этот класс, находящийся в папке Engine ( а там уже нет &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;GameInventoryManager &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;или&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;UDKInventoryManager &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;начиная с Октября 2010 (возможно от них не было толку)) следит за всем тем, что наш игрок имеет в &quot;сумке&quot;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #b45f06;&quot;&gt;&lt;b&gt;Примечание&lt;/b&gt;&lt;/span&gt;: &lt;span style=&quot;color: #f1c232;&quot;&gt;InventoryManager&lt;/span&gt; &lt;span style=&quot;color: #cccccc;&quot;&gt;завязан на&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;Pawn&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, а не на&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;PlayerController&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Еще одна важная вещь которую мы должны знать о классе&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;InventoryManager&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, это то что он просто отслеживает  статус текущего оружия: значения&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;PendingFire&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, о котором мы читали в &lt;/span&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;b&gt;WSTG&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Хотя этот массив инициализируется не в&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;InventoryManager&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Другими словами, база &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;InventoryManager &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;не позволяет стрелять с помощью него (наделаете забавных ошибок, если попытаетесь так сделать).По умолчанию для класса&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;UDKPawn &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;инвентарем заправляет как раз &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;InventoryManager&lt;/span&gt;, &lt;span style=&quot;color: #cccccc;&quot;&gt;поэтому нам надо создать подкласс от последнего,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;для того чтобы научиться стрелять.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class SandboxInventoryManager extends InventoryManager;

DefaultProperties
{
    PendingFire(0)=0
    PendingFire(1)=0
}&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;А вот и он. Крутатенюшка. Сначала вы добавляете&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;PendingFire &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; столько, сколько хотите режимов выстрела в своей игре. Если вы не хотите альтернативного вида выстрела, вы можете забыть о второй ячейки массива. И если же вы хотите больше чем два альтернативных выстрела, отлично, можно сделать столько сколько нужно.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;b&gt;Пр. переводчика&lt;/b&gt;: &lt;span style=&quot;color: #f1c232;&quot;&gt;PendingFire &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;- массив, содержащий количество и статус альтернативных режимов выстрела одного и того же оружия.  К примеру,&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;PendingFire&lt;/span&gt;(0)=0-&lt;span style=&quot;color: #cccccc;&quot;&gt;означает что оружие не стреляет, &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;PendingFire&lt;/span&gt;(0)=1&lt;span style=&quot;color: #cccccc;&quot;&gt; - оружие в режиме огня.По умолчанию, Режим выстрела(Fire mode) 0 активируется по ЛКМ, а Режим выстрела(Fire mode) 1,по ПКМ.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;Как я отметил ранее,&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;InventoryManager &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;связан с&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;Pawn&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, поэтому нам необходимо сказать  нашему pawn,чтобы он использовал наш собственный&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;InventoryManager&lt;/span&gt;:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class SandboxPawn extends UDKPawn;

DefaultProperties
{
    InventoryManagerClass=class&#39;Sandbox.SandboxInventoryManager&#39;
}&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;h4&gt;
Лепим оружие (скрипты)&lt;/h4&gt;
&lt;/div&gt;
&amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;Мы можем создать собственное оружие двумя путями: во-первых мы можем сначала написать поведение оружия( эффекты выстрела, снаряды) и лишь потом сделать для него внешний вид. Пример&lt;/span&gt; &lt;span style=&quot;color: #9fc5e8;&quot;&gt;physics gun&lt;/span&gt; &lt;span style=&quot;color: #cccccc;&quot;&gt;как раз демонстрирует,  что оружие не особо нуждается в модели, для того чтобы полноценно функционировать. Для примера создадим&lt;/span&gt; &lt;b&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;paintball gun&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Шаг 0: несколько подсказок о настройке оружия&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;Статья &lt;/span&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;b&gt;WSTG&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; дает нам целый набор настроек для &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;Weapon &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;и&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;UDKWeapon &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;классов. Некоторые более важные, некоторые менее. Среди них  есть массивы , значения которых определяют настройки для каждого режимы огня:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; •&lt;span style=&quot;color: #3d85c6;&quot;&gt;FiringStatesArray &lt;/span&gt;(array): &lt;span style=&quot;color: #cccccc;&quot;&gt;задается через  имя. Которое говорит о статусе оружия в руках и о режиме        огня. По умолчанию не используется. Вы можете назначить любое значение, которое  пожелаете, если не хотите заново изобретать велосипед.   (Пр. Переводчика: этого параметра уже нет в скриптах)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; •&lt;span style=&quot;color: #3d85c6;&quot;&gt;WeaponFireType&lt;/span&gt; (array): &lt;span style=&quot;color: #cccccc;&quot;&gt;задается через&lt;/span&gt;   &lt;span style=&quot;color: #f1c232;&quot;&gt;EWeaponFireType&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Говорит, к какому типу принадлежит оружие. Мы доберемся до него чуть позже.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; •&lt;span style=&quot;color: #3d85c6;&quot;&gt;WeaponProjectiles &lt;/span&gt;(array)&lt;span style=&quot;color: #cccccc;&quot;&gt;: задается  через подкласс снарядов. Если соответствующий режим огня устанавливается на выстрелы  определенными снарядами, вы должны знать какой класс снарядов должен вызываться для данного оружия.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; •&lt;span style=&quot;color: #3d85c6;&quot;&gt;FireInterval &lt;/span&gt;(array): задается через float. Указывает сколько времени занимает выстрел в данном режиме огня. Другими словами – темп стрельбы.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; •&lt;span style=&quot;color: #3d85c6;&quot;&gt;Spread &lt;/span&gt;(array): &lt;span style=&quot;color: #cccccc;&quot;&gt;задает погрешность в направлении выстрела (как бы &quot;разброс&quot;). Иначе, все пули(снаряды) будут лететь всегда точно в цель. Что не правдоподобно.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; •&lt;span style=&quot;color: #3d85c6;&quot;&gt;WeaponRange&lt;/span&gt;: &lt;span style=&quot;color: #cccccc;&quot;&gt;задается через a float. Определяет максимальную дальность выстрела, урон, время жизни снаряда. Обратите внимание, что это значение является общим для всех режимов огня.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Шаг 0.5 : добавляем наше оружие в инвентарь&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Мы сделаем это так, что бы легко было проследить за сутью реализации кода.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Когда player перезапускается (т.е. начало игры, рестарт игры, воскрешение игрока), класс &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;Pawn &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;создается из&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f1c232;&quot;&gt;GameInfo &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;и прикрепляется к&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;PlayerController&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, и&lt;/span&gt;  &lt;span style=&quot;color: #f1c232;&quot;&gt;GameInfo &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;вызывает функцию &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;AddDefaultInventory&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, принимая &amp;nbsp;новый&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;Pawn &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;как параметр.&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;П&lt;span style=&quot;color: #cccccc;&quot;&gt;о умолчанию не делается ничего кроме вызова функции &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;AddDefaultInventory&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; в классе &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;Pawn&lt;/span&gt;.&lt;span style=&quot;color: #cccccc;&quot;&gt; И это хорошо по многим причинам. Тем не менее, имеется базовый класс игры. И скорее всего вы будете иметь еще подкласс от класса&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;Pawn &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;(для персонажа)&lt;/span&gt;. &lt;span style=&quot;color: #bf9000;&quot;&gt;AddDefaultInventory &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;из класса &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;GameInfo &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;можно переписать, если у вас есть какие то общие параметры, настройки для всех классов(например, для ножа).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Итак, в нашем собственном&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;Pawn &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;классе, переписываем функцию&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;AddDefaultInventory &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; вот так :&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;function AddDefaultInventory()&amp;nbsp;
{
    //InvManager is the pawn&#39;s InventoryManager 
    InvManager.CreateInventory(class&#39;Sandbox.SandboxPaintballGun&#39;);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Все просто. Функция имеет и второй необязательный параметр, если его значение TRUE, то будет предотвращаться немедленная экипировка оружия. Теперь, если мы запустим игру, мы ничего не увидим, ввиду того что у оружия нету собственного меша. И все же, если написать в консоли волшебную команду&lt;/span&gt; &quot;&lt;span style=&quot;color: #6fa8dc; font-family: Courier New, Courier, monospace;&quot;&gt;showdebug weapon&lt;/span&gt;&quot;&lt;span style=&quot;color: #cccccc;&quot;&gt;, мы увидим следующее в верхнем левом углу экрана:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFsE6rK_ux3AnyEz7bL6LZHtIDHyV6U7VntHYkLlP-gP3mHX4hIPLnIu6Hq_1MvAq45TmYzYAk4zXNVt3_9sLgAv12xsjuzoQzuf9k28OsM46Bc9txsxVi3iJ8Jy8yzi1IDuaQstECmtCC/s1600/weapon_debug.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFsE6rK_ux3AnyEz7bL6LZHtIDHyV6U7VntHYkLlP-gP3mHX4hIPLnIu6Hq_1MvAq45TmYzYAk4zXNVt3_9sLgAv12xsjuzoQzuf9k28OsM46Bc9txsxVi3iJ8Jy8yzi1IDuaQstECmtCC/s1600/weapon_debug.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Зеленая часть текста говорит нам о оружии которое сейчас держит игрок, и подтверждает что наша пушка готова к использованию!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Шаг 1: Параметры оружия&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;Статья &lt;/span&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;b&gt;WSTG&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; рассказывает нам как обрабатываются выстрелы( в том числе и в сетевом режиме). Скорее всего мы так и не коснемся упомянутых функций, за исключением ,  пожалуй&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;BeginFire&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, к которой мы обратимся&amp;nbsp;чуть позднее. Давайте начнем разбираться что же у нас происходит в блоке &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;WeaponFiring&lt;/span&gt;. ???&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Рассмотрим блок &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;WeaponFiring&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, в функции BeginState, мы вызываем&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;FireAmmunition&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;,  затем еще&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;TimeWeaponFiring&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;,  которые будут вызывать задержку стрельбы  соответствующего режима огня, определяющуюся в массиве FireInterval. Если по какой-либо  причине,  нужна задержкаыстрелов при стрельбе, переписать эту часть функции будет правильным решением.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Когда отведенное время закончится, сработает  &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;RefireCheckTimer&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Он проверяет две вещи:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;1. Была ли команда перестать стрелять оружие. Если да, то происходит выполнение команды.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;2. Если команды перестать оружия не было, происходит запрос функции &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;ShouldRefire&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Если возвращается TRUE, сразу вызывается &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;FireAmmunition&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; без выхода из блока.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Если же ничего из перечисленного не случилось, означает что мы перестали стрелять, поэтому вызывается&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;HandleFinishedFiring&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, который по умолчанию переводит управление  оружием в блок Active.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #7f6000;&quot;&gt;&lt;b&gt;Внимание&lt;/b&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cccccc;&quot;&gt;Как вы могли уже заметить, первый выстрел( или  вызов&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;FireAmmunition&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;) работает несколько другим способом, нежели последующие выстрелы. Так, если  вам нужно прописать какое то действие, срабатывающее перед выстрелом, правильнее всего сделать это в  внутри  функции&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;FireAmmunition&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, а не в&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;BeginState&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Функция&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;ShouldRefire &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;проверяет есть ли боеприпасы у оружия (функция &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;HasAmmo &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;по умолчанию всегда возвращает TRUE), если вам еще хочется пострелять. (функция &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;StillFiring &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; по умолчанию возвращает значение функции&lt;/span&gt;  &lt;span style=&quot;color: #ffd966;&quot;&gt;PendingFire&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;).&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: white;&quot;&gt;&lt;b&gt;WSTG&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;  показывает нам тело функции &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;FireAmmunition &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;(от старой версии&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;UTWeapon&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, хотя все основные идеи сохранились и там). Сперва используются боеприпасы, (по умолчание ничего не происходит), а затем определяется режим огня, после чего, в соответствии с режимом,  вызываются различные функции.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp;Другими словами, режим огня установленный на оружии, более или менее, говорит с какими функциями нам следует поработать:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6fa8dc;&quot;&gt;&lt;b&gt;EWFT_InstantHit&lt;/b&gt;&lt;/span&gt;: &lt;span style=&quot;color: #bf9000;&quot;&gt;InstantFire()&lt;/span&gt;              &lt;span style=&quot;color: #cccccc;&quot;&gt;Скоротечный огонь&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #6fa8dc;&quot;&gt;EWFT_Projectile&lt;/span&gt;&lt;/b&gt;: &lt;span style=&quot;color: #bf9000;&quot;&gt;ProjectileFire()&lt;/span&gt;           &lt;span style=&quot;color: #cccccc;&quot;&gt;Огонь снарядами&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #6fa8dc;&quot;&gt;EWFT_Custom&lt;/span&gt;&lt;/b&gt;: &lt;span style=&quot;color: #bf9000;&quot;&gt;CustomFire()&lt;/span&gt;                 &lt;span style=&quot;color: #cccccc;&quot;&gt;Что-то самодельное&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
П&lt;span style=&quot;color: #cccccc;&quot;&gt;режде чем двигаться дальше,  давайте установим в нашем оружии конкретный режим огня.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;class SandboxPaintBallGun extends UDKWeapon;
DefaultProperties
{
    FiringStatesArray(0)=WeaponFiring //We don&#39;t need to define a new state
    WeaponFireTypes(0)=EWFT_InstantHit FireInterval(0)=0.1 Spread(0)=0
}&lt;/pre&gt;
&lt;/div&gt;
&lt;h4 style=&quot;text-align: center;&quot;&gt;
&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot;&gt;
Скоротечный огонь.(Instant Fire)&lt;/h4&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Если взглянуть на функцию&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;InstantFire&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, то можно увидеть что в ее теле вызывается некая Trace, для того что бы найти, куда же мы направили наше оружие. Не очень хочется связываться с этим. В конце функции есть вызов&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;ProcessInstantHit&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Вот его то мы и перепишем.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp;В нашем случае, полностью  меняем содержание этой функции, потому как мы просто хотим переместить decal в помеченную точку. Что получилось:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;simulated function ProcessInstantHit(byte FiringMode, ImpactInfo Impact, optional int NumHits)
{
    WorldInfo.MyDecalManager.SpawnDecal (
        DecalMaterial&#39;HU_Deck.Decals.M_Decal_GooLeak&#39;,// UMaterialInstance used for this decal.&amp;nbsp;
        Impact.HitLocation, // Decal spawned at the hit location.&amp;nbsp;
        rotator(-Impact.HitNormal), // Orient decal into the surface.&amp;nbsp;
        128,
        128, // Decal size in tangent/binormal directions.
        256, // Decal size in normal direction.
        false, // If TRUE, use &quot;NoClip&quot; codepath.
        FRand() * 360, // random rotation
        Impact.HitInfo.HitComponent // If non-NULL, consider this component only.    
    )
}&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Все это нам дает следующий результат:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/QDJ4vyyWwec?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;На видео показано как я использовал&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;Decal Material&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Кстати говоря, учтите что такая реализация специально выглядит не очень красиво, да и с точки зрения производительности нецелесообразно, а является лишь доказательством  работоспособности данного подхода к написанию собственного вида оружия.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Кроме того, если вы заметили, по умолчанию получившееся оружие находится в режиме  &quot;full auto&quot;(автоматическое). А что если необходим режим одиночного выстрела(тоесть нужно нажимать на кнопку каждыйраз когда надо выстрелить)?&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Хорошо, пусть это будет вашим домашним заданием! Пара подсказок: &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
- &lt;span style=&quot;color: #f1c232;&quot;&gt;PendingFire &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;обнуляется лишь когда происходит вызов&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #bf9000;&quot;&gt;StopFire&lt;/span&gt;&lt;br /&gt;
- &lt;span style=&quot;color: #cccccc;&quot;&gt;По умолчанию&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;StillFiring &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;предполагает что  у&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;PendingFire &lt;/span&gt;е&lt;span style=&quot;color: #cccccc;&quot;&gt;сть значение TRUE,  поэтому оружие должно продолжить стрелять.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Шаг 2: Отображение оружия&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp;У нас есть работающее оружие, пришло время придать ему форму. Для этого мы должны сделать две вещи:&amp;nbsp;добавить меш оружия, и разместить его в правильном месте. Как и следовало ожидать есть разница между видом оружия от третьего лица и от первого. Мы все сделаем как надо для обоих видов. Но сперва, пропишем то, что необходимо для каждой из ситуаций: прикрепляем к оружию ее модель:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;DefaultPropeties
{
     Begin Object class=SkeletalMeshComponent Name=GunMesh
         SkeletalMesh=SkeletalMesh&#39;WP_LinkGun.Mesh.SK_WP_Linkgun_3P&#39;
         HiddenGame=FALSE
         HiddenEditor=FALSE
     End Object
     Mesh=GunMesh
     Components.Add(GunMesh)
}&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Я использую меш&lt;/span&gt; &lt;span style=&quot;color: #9fc5e8;&quot;&gt;Link Gun&lt;/span&gt; д&lt;span style=&quot;color: #cccccc;&quot;&gt;ля примера. Вообще используются различные виды модели одного и того же оружия в зависимости от вида камеры в игре. Если вы посмотрите в AnimSet Editor на оружие, то заметите, что оно смещено в сторону. Вероятнее всего это предварительное смещение, для адекватного позиционирования оружия.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp;Так же как и меш от pawn, меш оружия должен быть смещен по оси Х, иначе оружие будет иметь неправильную позицию ( И все же, в контенте UDK, модели&lt;/span&gt; &lt;span style=&quot;color: #9fc5e8;&quot;&gt;Shock Rifle&lt;/span&gt;  от 1-ого лица и link gun от 3-его выглядят неправильно повернутыми( хотя это неважно для меш&lt;span style=&quot;color: #cccccc;&quot;&gt;а который используется для вида от 3-его лица)). В итоге, вы имеете два решения : повернуть модель с помощью кода, или сказать своему 3д-артисту, что он плохой человек и ему следует повернуть модель в 3д редакторе. :)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp;С этим покончили, теперь оружие прорисовывается. Вам придется верить мне на слово, потому как на данный момент его нельзя увидеть, т.к. оно расположено где-то за &quot;горизонтом&quot; (Возможно в центре локации, но я не проверял).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp;Обратите внимание, что все настройки меша находятся в&lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt; MeshComponent&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, это означает что ваша модель может быть как и&lt;/span&gt; &lt;span style=&quot;color: #9fc5e8;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, так и&lt;/span&gt; &lt;span style=&quot;color: #9fc5e8;&quot;&gt;skeletal&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. По умолчанию предполагается что оружие это&lt;/span&gt; &lt;span style=&quot;color: #9fc5e8;&quot;&gt;skeletal &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;меш( и настроен скелет для использования на оружии различной анимации), поэтому&lt;/span&gt; &lt;span style=&quot;color: #9fc5e8;&quot;&gt;skeletal &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;мешем пользуются в 99% случаев. &lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Единственный вариант, который я вижу, где уместно использовать&lt;/span&gt; &lt;span style=&quot;color: #9fc5e8;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, это оружие ближнего боя при игре от&amp;nbsp;3-его лица.  А &lt;/span&gt;&lt;span style=&quot;color: #9fc5e8;&quot;&gt;physics gun&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; вообще демонстрирует, что в некоторых случаях оружию просто не  требуется меш.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: center;&quot;&gt;
Вид оружия с камерой от первого лица. (First Person perspective)&lt;/h4&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Класс&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;UDKWeapon &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;имеет в себе функцию &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;SetPosition&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, она вызывается при каждой последующей прорисовке&amp;nbsp;кадра. По умолчанию она ничего не делает, но ее можно переписать так чтобы она поместила модель оружия в правильное место, по образу и подобию как действует та же функция, только в &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;UTPawn&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Несколько грубоватое решение, но со своей задачей справляется.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;simulated event SetPosition(UDKPawn Holder)
{ 
    local vector FinalLocation;
    local vector X,Y,Z;

    Holder.GetAxes(Holder.Controller.Rotation,X,Y,Z);
    FinalLocation= Holder.GetPawnViewLocation(); //this is in world space. 
    FinalLocation= FinalLocation- Y * 12 - Z * 32; // Rough position adjustment 
    SetHidden(False); 
    SetLocation(FinalLocation); 
    SetBase(Holder); 
    SetRotation(Holder.Controller.Rotation);
}&lt;/pre&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Если вы читали мои туторы про камеры, то возможно поняли, что именно я тут сделал.По некоторым причинам, вызовы&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;SetHidden&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;(false) и&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;SetBase &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;необходимы. Вот что получается в результате.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/ZhM0S10bddk?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;text-align: center;&quot;&gt;
&amp;nbsp; &amp;nbsp;Вид оружия с камерой от  третьего лица.(Third Person Perspective)&lt;/h4&gt;
А&lt;span style=&quot;color: #cccccc;&quot;&gt; вот это намного проще. И не требует знаний пространственной геометрии. :) Все что нам надо, так это прицепить модель оружия к соответствующему сокету.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp;Что бы сделать это, нужно использовать функцию&lt;/span&gt; &lt;span style=&quot;color: #bf9000;&quot;&gt;AttacWeaponTo&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; из класса&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;UDKWeapon&lt;/span&gt;, &lt;span style=&quot;color: #cccccc;&quot;&gt;которая присоединит&lt;/span&gt; &lt;span style=&quot;color: #9fc5e8;&quot;&gt;SkeletalMeshComponent &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;к соответствующему сокету. Но дело в том, что по умолчанию, эта функция не вызывается( наверно потому, что не знает куда присоединять оружие). Быстрый осмотр класса&lt;/span&gt; &lt;span style=&quot;color: #f1c232;&quot;&gt;UTWeapon &lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;показал нам, что все это должно делаться в &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;TimeWeaponEquipping&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, что в общем, имеет смысл. Перепишем эти функции:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;simulated function TimeWeaponEquipping()
{ 
    AttachWeaponTo( Instigator.Mesh,&#39;WeaponPoint&#39; );
    super.TimeWeaponEquipping();
} 

simulated function AttachWeaponTo( SkeletalMeshComponent MeshCpnt, optional Name SocketName ) 
{
    MeshCpnt.AttachComponentToSocket(Mesh,SocketName); 
}&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Не правда ли все просто!? А вот результат наших стараний:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/r9dTBiLLrtY?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;Однако,  мы только присоединили оружие к игроку, мы не трогали никаких настроек самого оружия,(такие как&amp;nbsp;месторасположение оружия), что может привести к некоторым проблемам, например, при выстреле снаряда. Это означает, что нам надо сделать кое-что в функции &lt;/span&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;SetPosition() :&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;simulated event SetPosition(UDKPawn Holder) 
{ 
    local SkeletalMeshComponent compo; 
    local SkeletalMeshSocket socket; 
    local Vector FinalLocation; 
    compo = Holder.Mesh; 
    if (compo != none) 
    { 
        socket = compo.GetSocketByName(&#39;WeaponPoint&#39;);
        if (socket != none) 
        { 
            FinalLocation = compo.GetBoneLocation(socket.BoneName);
        }
    } 
    //And we probably should do something similar for the rotation :) 
    SetLocation(FinalLocation);
}&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/5736782437449893310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/04/udk_3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/5736782437449893310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/5736782437449893310'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/04/udk_3.html' title='Огнестрельное оружие в UDK - Основы'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFsE6rK_ux3AnyEz7bL6LZHtIDHyV6U7VntHYkLlP-gP3mHX4hIPLnIu6Hq_1MvAq45TmYzYAk4zXNVt3_9sLgAv12xsjuzoQzuf9k28OsM46Bc9txsxVi3iJ8Jy8yzi1IDuaQstECmtCC/s72-c/weapon_debug.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-2567478875172340928</id><published>2013-04-07T10:29:00.000-07:00</published><updated>2013-04-07T10:38:27.413-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Система диалогов для UDK</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Нашел вот&amp;nbsp;&lt;a href=&quot;http://forums.epicgames.com/showthread.php?p=27570531&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&amp;nbsp;довольно полезный мод, который можно использовать при создании игр практически любого жанра - система диалогов.&lt;br /&gt;В принципе все очень просто, а также, в прилагаемом файле есть описание на английском, поэтому я просто переведу документацию на русский(вольный перевод) и сделаю некоторые комментарии .&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Автор: &amp;nbsp; &amp;nbsp;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;i style=&quot;color: gainsboro; font-size: 18pt;&quot;&gt;S ha D&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: gainsboro;&quot;&gt;&lt;span style=&quot;font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Перевод: &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;Vadakuma&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;Добро пожаловать на страничку описания системы диалогов, которую я создал, чтобы помочь пользователям UDK скорее адаптироваться к движку. Здесь будет описано как установить модуль системы диалогов и какими функциями&amp;nbsp; этот модуль обладает.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Установка&lt;/b&gt;&lt;/h2&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Если Вы уже немного знакомы с &lt;/span&gt;&lt;i&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;UnrealScript&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;, Вы наверняка знаете как устанавливать прилагающиеся исходники.Вы также должны знать, что если вы хотите интегрировать этот диалоговый модуль в уже созданный свой, то Вам придется более тщательно проанализировать код для правильного внедрения.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;medium_text&quot; id=&quot;result_box&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;span style=&quot;background-color: white;&quot; title=&quot;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;medium_text&quot; id=&quot;result_box&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Для начала извлеките скачанные файлы (папки Development и UDKGame) из архива в папку с UDK. Соглашайтесь на замену.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTX_DAnz8Q8AA5cTTEunHZozkB8UV1ubTopboBTJGB6NeATkHlslsdTH8Tujzm6GCzgZT8VEwYnV9rtjgX2atkCroNVFruUg54fCsNeFCVhgloxTc9c5FJCXm9Uxi-3jef8mxnBJD9Rj87/s1600/32080872.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;312&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTX_DAnz8Q8AA5cTTEunHZozkB8UV1ubTopboBTJGB6NeATkHlslsdTH8Tujzm6GCzgZT8VEwYnV9rtjgX2atkCroNVFruUg54fCsNeFCVhgloxTc9c5FJCXm9Uxi-3jef8mxnBJD9Rj87/s320/32080872.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Теперь у Вас есть папка &lt;/span&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;Dialogue&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; в директории &quot;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;~/Development/Src&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Необходимо показать движку, что мы добавили новый скрипты.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Поэтому идем в &quot;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;~/UDKGame/Config&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и открываем &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;DefaultEngineUDK.ini&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; .Там&amp;nbsp;находим&amp;nbsp; строку:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #674ea7; font-family: Verdana, sans-serif;&quot;&gt;ModEditPackages=MyMod&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;и заменяем ее на:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #674ea7; font-family: Verdana, sans-serif;&quot;&gt;ModEditPackages=Dialogue&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;span style=&quot;color: red; font-family: Trebuchet MS, sans-serif;&quot;&gt;ПРИМЕЧАНИЕ&lt;/span&gt;&lt;/b&gt;: &lt;span style=&quot;color: #cccccc;&quot;&gt;Я поступил немного по другому. Так как я внедрял этот код в свой, то делал редактируемой папку&amp;nbsp; в &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;DefaultEngine.ini&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; ,но в принципе суть не должна была поменяться.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirlQyE_F9Q8u6ELYCDABYVLPdfZBodrAV53nla-6L0PaswydnYbyXRksiTOp2NbinpNomAMP4R_klBLuMrjW4xmzf0mhrA5on_NPg4o56cl-54rzem8sjljug7AnZJGuA99Z0JUnLbKeaQ/s1600/21129224.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;220&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirlQyE_F9Q8u6ELYCDABYVLPdfZBodrAV53nla-6L0PaswydnYbyXRksiTOp2NbinpNomAMP4R_klBLuMrjW4xmzf0mhrA5on_NPg4o56cl-54rzem8sjljug7AnZJGuA99Z0JUnLbKeaQ/s320/21129224.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;И остался последний шаг : открываем &lt;/span&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;UnrealFrontEnd&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и жмем &lt;b&gt;Make &amp;gt; Full Recompile&lt;/b&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr9ygKiq8EhqxMAoloXQTU77VgKD9cTc5TxjI6cdYJGx9WTgAArQ1I72D-Xb_JQ1v4wH3C1t9nW3KQwVbreJ1hoCxrUzbfkdnomMbvPog8-p87n2CmMaUwXVMaHZ6F2gneVtdfBrq8OPZV/s1600/42678840.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;140&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr9ygKiq8EhqxMAoloXQTU77VgKD9cTc5TxjI6cdYJGx9WTgAArQ1I72D-Xb_JQ1v4wH3C1t9nW3KQwVbreJ1hoCxrUzbfkdnomMbvPog8-p87n2CmMaUwXVMaHZ6F2gneVtdfBrq8OPZV/s320/42678840.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Дальше просто запускаем UDK загружаем тестовую карту &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;DIA_ExampleMap&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; и тестируем.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Применение&lt;/b&gt;&lt;/h2&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Во второй части я объясню, как можно создавать диалоги с помощью &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;Kismet Editor&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;. Для этого я опишу каждую доступную в моде функцию. В Kismet жмем правую кнопку мыши&amp;nbsp; и идем в &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;Action &amp;gt; Dialogue&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; :&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWLnmooaV5Nt2q5_1yMbFLeSlGf2BuEs8NqupDM6KZaqM_iGcd_1IR0O3iTxstKiLY1SeIKn6-zQXG9EN6ykD9LbUCJ_scYW7Dw6d3vLmKc4Tzub6JZTVPfC0DbtJq22SkQbJihsH-Cd8e/s1600/68293284.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;149&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWLnmooaV5Nt2q5_1yMbFLeSlGf2BuEs8NqupDM6KZaqM_iGcd_1IR0O3iTxstKiLY1SeIKn6-zQXG9EN6ykD9LbUCJ_scYW7Dw6d3vLmKc4Tzub6JZTVPfC0DbtJq22SkQbJihsH-Cd8e/s320/68293284.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Нода&lt;/span&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;BeginDialogue&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;span class=&quot;medium_text&quot; id=&quot;result_box&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;span title=&quot;&quot;&gt;&amp;nbsp; &amp;nbsp; Первый узел позволяет игроку войти в режим диалога.&amp;nbsp;&lt;/span&gt;Это обязательный узел перед всеми последующими!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;medium_text&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimAUjeyhOmT4SkI1lEkCwsWxHqLnNRFFbFzL9lliT0NExj1gAxxhrydh4-U0wMbgZA_btYM_6J6X4sv9ISMLrGteMECpfMYVxeApXmPP9x0mq5m4nbjqu9W5h4XZDTam10tfcejF1eqMLE/s1600/56191526.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimAUjeyhOmT4SkI1lEkCwsWxHqLnNRFFbFzL9lliT0NExj1gAxxhrydh4-U0wMbgZA_btYM_6J6X4sv9ISMLrGteMECpfMYVxeApXmPP9x0mq5m4nbjqu9W5h4XZDTam10tfcejF1eqMLE/s1600/56191526.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Связи :&lt;br /&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Inputs&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;In&lt;/b&gt; : Начало диалога&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Outputs&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;Out&lt;/b&gt; : переход к самому сообщению&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Variables&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;Player&lt;/b&gt; : Игрок для которого начинается диалог&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Настройки :&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Background Texture&lt;/span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span style=&quot;color: #cccccc;&quot;&gt; текстура используемая на заднем плане&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Button Hovered Texture&lt;/span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span style=&quot;color: #cccccc;&quot;&gt; текстура для активных кнопок выбора&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Button Texture&lt;/span&gt;&amp;nbsp;&lt;/span&gt;- &lt;span style=&quot;color: #cccccc;&quot;&gt;текстура для неактивных кнопок выбора&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Margin X&lt;/span&gt;&amp;nbsp;&lt;/span&gt;- &lt;span style=&quot;color: #cccccc;&quot;&gt;горизонтальное расположение &quot;margin&quot; окна с диалогом (смотрим картинку).&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Margin Y&lt;/span&gt;&amp;nbsp;&lt;/span&gt;- &lt;span style=&quot;color: #cccccc;&quot;&gt;вертикальное расположение &quot;margin&quot; окна с диалогом (смотрим картинку).&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Padding X&lt;/span&gt;&amp;nbsp;&lt;/span&gt;- &lt;span style=&quot;color: #cccccc;&quot;&gt;горизонтальное &quot;padding&quot;&amp;nbsp; окна с диалогом (смотрим картинку).&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Padding Y&amp;nbsp;&lt;/span&gt;&lt;/span&gt;-&lt;span style=&quot;color: #cccccc;&quot;&gt; вертикальное &quot;padding&quot;&amp;nbsp; окна с диалогом (смотрим картинку).&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span class=&quot;medium_text&quot; id=&quot;result_box&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Use Texture&lt;/span&gt;&amp;nbsp;&lt;/span&gt;- &lt;span style=&quot;color: #cccccc;&quot;&gt;Установите флажок, если вы хотите использовать текстуры остановленные выше.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span title=&quot;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;По умолчанию будет просто белый цвет.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Скриншот поможет вам правильно понять, что есть что:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc-B8pDnqesHVnEWbnEly1DJJPgSflU0SQguNheOiUrH0ybl5ICTJpLLSit_t5mWxNQ0jssmbk4bnOFWmrTO6DvKhzV1lnfrlTs317I-lP0NoKe0ogGveukMm55COMxpu9qyPNj8hIvqDf/s1600/07221938.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;61&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc-B8pDnqesHVnEWbnEly1DJJPgSflU0SQguNheOiUrH0ybl5ICTJpLLSit_t5mWxNQ0jssmbk4bnOFWmrTO6DvKhzV1lnfrlTs317I-lP0NoKe0ogGveukMm55COMxpu9qyPNj8hIvqDf/s320/07221938.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Нода &lt;span style=&quot;color: #ffd966;&quot;&gt;Message&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNJDk9SgXuNarsbj5CTBaxQOYIt3owszRi_53QM62y4HfrDh-L_5I4nzXxDpxZkXSukgejADrnaKkkmRTfOpUmb3A1ABml732nQs-Z8AdX7_FqcpE_8DV2bgNcSe15vV_2XTm8wEC_E8MM/s1600/89024833.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNJDk9SgXuNarsbj5CTBaxQOYIt3owszRi_53QM62y4HfrDh-L_5I4nzXxDpxZkXSukgejADrnaKkkmRTfOpUmb3A1ABml732nQs-Z8AdX7_FqcpE_8DV2bgNcSe15vV_2XTm8wEC_E8MM/s1600/89024833.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Данная нода выводит сообщение.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Связи :&lt;br /&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Inputs&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;In&lt;/b&gt; : активируем вывод сообщения.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Outputs&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;Out&lt;/b&gt; : следующее сообщение&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Variables&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;Player&lt;/b&gt; : игрок которому будет показано это сообщение&lt;br /&gt;&lt;b&gt;Camera&lt;/b&gt; : камера с которой будет показано сообщение&lt;br /&gt;&lt;b&gt;Text&lt;/b&gt; : содержание&lt;br /&gt;&lt;b&gt;Name&lt;/b&gt; : имя персонажа который говорит&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Настройки :&lt;br /&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Dialogue Box Top&lt;/span&gt; -&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Ставим галочку если хотим, чтобы сообщение выводилось сверху.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Нода &lt;span style=&quot;color: #ffd966;&quot;&gt;Choice&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Эта нода позволяет выбрать четыре варианта ответа.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKOLaDwvjbB59KEehouS8CKQNhMWHzbGfyxRyib3klZ9IYZUBseuKYoNbdxTbTxhBvkohcjEa8BnQh9XotmE0Pd429eBUQXiHED49RfHoRV7geD-6Ia0HvYL7PmaRA-VFxsc7knH1nY0N_/s1600/10670730.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKOLaDwvjbB59KEehouS8CKQNhMWHzbGfyxRyib3klZ9IYZUBseuKYoNbdxTbTxhBvkohcjEa8BnQh9XotmE0Pd429eBUQXiHED49RfHoRV7geD-6Ia0HvYL7PmaRA-VFxsc7knH1nY0N_/s1600/10670730.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Связи :&lt;br /&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Inputs&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;In&lt;/b&gt; : показывает варианты ответов.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Ouputs&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;Choice X&lt;/b&gt; : действие если игрок выберет ответ Х.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Variables&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;Player&lt;/b&gt; : игрок котором показываются варианты ответов.&lt;br /&gt;&lt;b&gt;Camera&lt;/b&gt; : камера из которой мы смотрим.&lt;br /&gt;&lt;b&gt;Text&lt;/b&gt; : содержание сообщения.&lt;br /&gt;&lt;b&gt;Name&lt;/b&gt; : имя персонажа что говорит.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Настройки :&lt;br /&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Choice X&lt;/span&gt; -&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Ставим галочку если хотим активировать вариант Х. Запомните эти настройки!&lt;br /&gt;(кнопка1 : сверху слева, кнопка 2 : сверху справа, кнопка 3 : снизу слева, кнопка 4 : снизу справа)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Choice Text X&lt;/span&gt; -&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Текст на кнопке Х, если кнопка активирована.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;font-weight: bold; text-align: center;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;Dialogue Box Top&lt;/span&gt; -&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; Ставим галку если хотим что бы сообщение было вверху экрана. (кнопки будут расположены снизу экрана)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;Нода &lt;span style=&quot;color: #ffd966;&quot;&gt;EndDialogue&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Эта нода завершает режим диалога и возвращает к игре.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBdle0GffmmIm-URGpMaOxPbO4Zi4d9Xa6cuh1xtcP4s6IcaYkKT_wYaRMVE9J2-xxdGzOg3wQ8pZPTFeVBYmhv6SUecqmnWDMSRAvFAPUHJVomVwe0nayY0FYCvdS2VjJF-Qlx3CRzv7f/s1600/99866901.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBdle0GffmmIm-URGpMaOxPbO4Zi4d9Xa6cuh1xtcP4s6IcaYkKT_wYaRMVE9J2-xxdGzOg3wQ8pZPTFeVBYmhv6SUecqmnWDMSRAvFAPUHJVomVwe0nayY0FYCvdS2VjJF-Qlx3CRzv7f/s1600/99866901.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Связи :&lt;br /&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Inputs&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;In&lt;/b&gt; :конец диалога.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Outputs&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;Out&lt;/b&gt;: игрок выходит из режима диалога.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&lt;span style=&quot;color: #0c343d;&quot;&gt;Variables&lt;/span&gt;&lt;/th&gt;&lt;td style=&quot;border: 1px dotted rgb(215, 215, 215);&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;Player&lt;/b&gt; : игрок которого выпускают из режима диалога.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Пример&lt;/h2&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;И наконец можно, к примеру, построить вот такую логическую цепочку:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGUWSaI5rXex3HZjUu_qfZ2BOk_AMUj9h65IqBxl6G06dzOcJERQrOk5NMMO_jydE_W_aRle4HbYeolYUVFX9RZFfVMKJ6lAZbBYkJaowbD4ZjNnEIU54_GwGpTspMo8PYwcTlBIcGd0jh/s1600/98472093.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;143&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGUWSaI5rXex3HZjUu_qfZ2BOk_AMUj9h65IqBxl6G06dzOcJERQrOk5NMMO_jydE_W_aRle4HbYeolYUVFX9RZFfVMKJ6lAZbBYkJaowbD4ZjNnEIU54_GwGpTspMo8PYwcTlBIcGd0jh/s320/98472093.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Игрок касается триггера в входит в режим диалога.Сначала показывается просто сообщение, а далее надо будет выбрать один ответ из двух вариантов. В зависимости, какой Вы выбрали ответ, Вам покажут то или иное сообщение.&quot;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;https://docs.google.com/file/d/0B0KnHGXDpCCgTXJ4NWxVZXhMeDA/edit?usp=sharing&quot; style=&quot;color: palegreen;&quot; target=&quot;_blank&quot;&gt;скачать исходники.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;b&gt;PS:&lt;/b&gt; &amp;nbsp;Благодаря наличию исходников мода, можно реализовать сколь угодно гибкую систему диалогов, удовлетворяющую потребностям поставленной вами задачи.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;Также можно почерпнуть много полезной информации о реализации HUD в UDK, к примеру,&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://www.unrealscript.narod.ru/tutorials/scripting/hud/hud.html&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: lightcyan;&quot;&gt;тут&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span style=&quot;color: #cccccc;&quot;&gt;и&lt;/span&gt;&lt;span style=&quot;color: lightcyan;&quot;&gt;&amp;nbsp;&lt;a href=&quot;http://www.shad-fr.com/udk/hudtut/english.html&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;b style=&quot;color: gainsboro;&quot;&gt;UPDATE&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; Ввиду того, что Эпики постоянно что-либо модернизируют и изменяют во внутренней структуре движка, в частности и в скриптах, некоторые старые решения перестают работать так, как следует.Вот и эти скрипты дожили до этого момента :)&lt;br /&gt;&amp;nbsp; &amp;nbsp; Эпики полностью вырезали скрипты UIscene(устаревшая система создания меню), на основе которых происходила обработка данных получаемых с мышки. Поэтому мышь теперь надо двигать иным способом. Прикрепил обновленный вариант, где проблема с мышью исправлена.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://docs.google.com/file/d/0B0KnHGXDpCCgNVhBUFNxVWl3WUE/edit?usp=sharing&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: white; font-size: small;&quot;&gt;&lt;b&gt;Скачать&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/2567478875172340928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2013/04/udk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/2567478875172340928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/2567478875172340928'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2013/04/udk.html' title='Система диалогов для UDK'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTX_DAnz8Q8AA5cTTEunHZozkB8UV1ubTopboBTJGB6NeATkHlslsdTH8Tujzm6GCzgZT8VEwYnV9rtjgX2atkCroNVFruUg54fCsNeFCVhgloxTc9c5FJCXm9Uxi-3jef8mxnBJD9Rj87/s72-c/32080872.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4497768542277715083.post-3447633824108670737</id><published>2011-07-02T07:25:00.000-07:00</published><updated>2013-04-01T13:04:39.031-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UDK"/><title type='text'>Все новое - хорошо забытое старое</title><content type='html'>старое видео, старой задумки:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;425&quot; height=&quot;344&quot; src=&quot;http://www.youtube.com/embed/-BeSAHuzOAo?fs=1&quot; frameborder=&quot;0&quot; allowFullScreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
А времени чтобы развить из этого что-то более интересное так и не получилось выделить :(</content><link rel='replies' type='application/atom+xml' href='http://www.vadakuma.ru/feeds/3447633824108670737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.vadakuma.ru/2011/07/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/3447633824108670737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4497768542277715083/posts/default/3447633824108670737'/><link rel='alternate' type='text/html' href='http://www.vadakuma.ru/2011/07/blog-post.html' title='Все новое - хорошо забытое старое'/><author><name>amounta</name><uri>http://www.blogger.com/profile/00579468601098104571</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/-BeSAHuzOAo/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>