{"id":855,"date":"2018-05-06T14:08:14","date_gmt":"2018-05-06T06:08:14","guid":{"rendered":"http:\/\/sirokuma.cc\/?p=855"},"modified":"2018-05-10T17:05:11","modified_gmt":"2018-05-10T09:05:11","slug":"ue4-%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0%e4%b9%8b%e5%9b%9b","status":"publish","type":"post","link":"https:\/\/sirokuma.cc\/?p=855","title":{"rendered":"UE4 \u2013 \u5b66\u4e60\u7b14\u8bb0\u4e4b\u56db"},"content":{"rendered":"<p>\u4e3a\u4e86\u65b9\u4fbf\u67e5\u770b\u7c7b\u5173\u7cfb\uff0c\u60a8\u53ef\u4ee5\u70b9\u51fb\u8fd9\u91cc\u5728\u65b0\u6807\u7b7e\u4e2d\u67e5\u770b\u5927\u56fe\uff1a<\/p>\n<h2><a href=\"http:\/\/www.pariya.cc\/res\/UE4%20ARCH%203.html\">\u70b9\u6211\u67e5\u770b\u5927\u56fe<\/a><\/h2>\n<div class=\"mxgraph\" style=\"max-width: 100%; border: 1px solid transparent;\" data-mxgraph=\"{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;toolbar&quot;:&quot;zoom layers lightbox&quot;,&quot;edit&quot;:&quot;_blank&quot;,&quot;xml&quot;:&quot;&lt;mxfile userAgent=\\&quot;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) draw.io\/8.4.7 Chrome\/59.0.3071.115 Electron\/1.8.3 Safari\/537.36\\&quot; version=\\&quot;8.5.15\\&quot; editor=\\&quot;www.draw.io\\&quot; type=\\&quot;device\\&quot;&gt;&lt;diagram id=\\&quot;bce1c419-d2d6-298f-5264-61ea44c30ab8\\&quot; name=\\&quot;Page-1\\&quot;&gt;7V1rU+M41v41qaK7Csr3y8cAoZd6u2mKy8zupymTCPBMsBnHaZr99a8kW75IJ4ljSw47rd2pGWI7jq3n0dHRuU7ss5efX7Lo9flbukDLiWUsfk7s84ll2WFg4P+QI+\/FEcv0reLIUxYvimNmfeA2\/i8qD5ZffFrHC7RqXZin6TKPX9sH52mSoHneOhZlWfrWvuwxXbZ\/9TV6QsKB23m0FI\/+Hi\/y5\/I1gtCoT\/wLxU\/P7Kdt1ynOPETzv56ydJ2UPzix7AuL\/L84\/RKxm5V3Wj1Hi\/StccieTeyzLE3z4q+Xn2doSUaXjVvxvYsNZ6sHz1CSd\/mCt4g8yzMXXvjgebYZHLvFHX5Ey3U5GPffH\/4kg1w8b\/7OBuk5f1niv8yJfSr+avkgP1CWo5+NQ+VTfEHpC8qzd3xJeda1y18uORMExce3evxNRo\/nxtC75bGohPypunP91viP8sU7DoLlCKMw+5mjZLESRgEfnBLG4U8Py3T+Fx4NfKiktOkVHy9i8tvnBv7UGDU8WNn7v8nxE5d9\/A879zPOG6fwp\/+UN9g41qt0nc3Rhjeyy+HMo+wJ5duxR4vW7BAha2LileOfoWWUxz\/aEwgCpbzddRrj56\/g9wz3xPAtx7N9LzBNN2iRoZou7IbFu5b3aNKbu63rGK0bVY\/LblSMh3AjypjqjXuSKByFRBVRPMduUuXEsNjna5TF+E1QNohCbtiBQoxnh+CQ4zkntusGVoD5ErhB6LSwd5yeJCLctBv\/awsqy+9GKQxw9N647JVcsNr8NlZgtn7HN02OocUdpfGVQdfg63Q6z9NMoOvqLX5ZRgn+dPqYJvlteYbQMVrGTwn+e46pRfh2SlaAGK+s0\/JEnr7io\/PneLn4Gr2na0KkVY5XTfbp9DnN4v\/i20aM4vh0lpeTwfJaV9ySb5asztAKX3PNWG1yh75FP1sXfo1WeXlgni6X0esqfqhe4wVjGCenaZ6nL+VF7KXJNDxLl2lGx8J+pP+TswY6Vlta2bYhLIK2AyyCvmcpWAUdS9QFbjGw6Cx9eU0T\/J6f8dkbrKtUBwSq4DfPKYRZ+hdiw5akBXcaI1keYvRZosd8I3lWr9E8Tp6+0mvOnfrITTki5FCKv\/u4pCL1OV4sUEKAT\/MojwqUCaTlFMQP6p7if\/DAnpH11sUPfoY\/m\/Vn\/A+5PMNvmuB3iWKKMcIUekOERgD6m+fXbj4w0eJ1g59dJxX9QFy+7m6x3Le8JXnheyoamkzwnoqBML6\/JWhRnRFXO82JAZxwrfE4YVYijF8SPpcwi2uDBncAuL646RlvwpuGuPe7K7WWYs5X2FdT\/Yys43gINA1k0sA0nIPywNvBg\/kyWmGxbky\/YXU9QUikBVbOMqxUYWyal+ilQC5NuqqHimgiqof43dfEUmRcULzv4vlfF+tknscplhDGNd6FRtl7dUqzQSob3ENqi+yHGmQQ4MXiAFXwMruq2QvbF4zSEtVg3hGsz49NAXBbBNwGwF1GD2h5na5iSlX7PCuu5UA\/DK5BR40vUAGrqAD+SPHVZ9ZkapwivEe+XuJ1YXYxOT2bBAH7I9RTWyoFwhEFvR2Kxu8fcZavI3IVRd8yZsmCAH80J8NAPpcHbvBQkAk0xf\/cvb+i+tLizKdqiDQ35HDDMg8p9n17i3y4QXMU\/0BaTIxFBafjSqGECqG4eyyFBdX1GPZ4kCMiMc7RMo9uERYgxB9iaEqooYQ3pkVhGwGo1n+EP5ycnHzSIEsFOTykucAX1QVmHxBtxMZ0UVuGK5mAKaHnvxJq2NYhTQSh6EIoJQKlAWgjwidLKYH\/rQWFXDY4B9UVNyoImA1kibjOUIb+Xsd4F15w4ah2NmgmyGUCC8g7CBO8bXKBZ0K1XBwBy4mmhVxahId0QDFOArTI82j+fJcWUkGrC6rwd6wRNckqnHMz3vXc17sG6Vi7I6qGprktkuALygvEi0itYpZruOXC7Y+o+5nmRl2vwhotCp\/w0Y4YAy96eZ0UcUXrghorTQ25IUXMkzsONTau8mfRcn4WvaAsOtLyXkHg2Ii6nWmKxsD7r+gHWpbynv6tZbxkiN0x1TcLSBX6Pc2WixJi+reGWDLEwZham7VRQ7\/FUzh+RLevUULMdcyrc5mQo3jsE705lw29Z4yqwfka+o8DvT2mhrbZkYehpxr4LCGDd0as96s4TY4e0nSpUZeOujumxmZtm\/BVzGaB\/EIjrgbxYEQFzjY3muFv0nWO9ojx0jSQmwZijqjkWSYQ71fQ4DzGA5zPn6sILq3NSwbaPmjMtijxiz26ALJO+FWT8MsSOFggj22KdICKXlRhXVuS42\/QPI+SpyWqf67yuPCp643f8zuwL1piqJMoR6ek0MlKIOHARHRHTES\/ILrHXbT6q7IhtQ5oqbRZKlWzfFDaMcxCCasPy1xvgn1\/8xUfof\/WuMrDFUodVoerGBm+K5lU5wjKxxzKKFaHuahJ1hbh728JHl\/6UUMsE2IwW1gdxruSg++nqxXK71coO8fD2JrfzROaA1I5AKUCq+KADShoVUo41cdu51n8mlfxHfwxjb1U7KHEX3XzX9w0TqlQv0V5jkd3RQBvHajeWwMuCXAoI1gV4OLzilZDAV6d6d1r32V0VNZUZHqzaMBmtcKrL5dXsz+m15fkeGESvEzwwGHI\/osqu3CxXavDtC4TfEAbCuVSA8ryVSfjxfUd4sItHgW6nn+NV\/nRpyLpV+MuFXcopXc0Ue+Ke3gFFUzFgetSjZSN5UctaGsbnK21bwlbx9txI4UlbF1xQz9leXtA7TftJlDjJgi4uqB4x++KYsEAxILJTDJy5YIY+Tcl7kGU4XHPEdkBND7qFWHzilBNsEHGeQh5NQuCaPzRur8UWCHbPASrEtV\/Y+TPdLG4jt4S4ms7R694BUfJ\/P1oSo6RSX6F3sifWteXSgUPMOWpmuEmEAPA5eARhGvILxONuHTEgxFlugkYb0vEsWRcodVKg60U7CoBahy0NwZ33ScMbw2wXIBtwIw3noommmfpfJ6QXyOmA8Aar\/dtavZtLr9tg+I6PZAZEvQ8k0WTNc0303WelvN+Skx53GctBzbKgbAz+lt2ajDYCsSAJ5rz72bJ+mW6On0nW\/LCV0\/pUJZpvExeyXSto7prv33NkWJbr3kikyfQ1k8VT0wLiK38DZWFt0rTHmUCO6iRloc0FIylDmlAEahtt59ruCFLroZ5AMxgQJYynG1R0mtj7FhIQ2FX463xon4nwKutsb1whUKqIFylqOmbDTJ433a2jPGb3SC6adJbdck4e2NK6k3NFCzjbp0l3x8fNbyS4YX6JqhbiDea2qaLxTc8ni\/43ahurasbyd9sQwFS6qAGSt9QZFvFSc8yhDWuQvlqn9UTXTL6UJjUeHrYBw6TYubrD9u02fM5IynfTrlrnFRg77iRpL7MIffAyvsye6Kw2carRRy9pMni7jlOBDrVXLOcCdxGfNJsIe725l3VRHAr8Zj3+RDEMzm+uHZP4tmcmd8x1RDP5gIBnfKBlRHPF6N9uBLc2qk0vlPJ9LhowGPbFxc\/MEY4VBEM6IsRJP0SAnWa0DalqJqMHzKN3w5FKyTXDLQSGnBX0NZpzQXJXBgz9V98XNHAJaCr7ZR9YO2a3a8iatQHqofxbSLxxI9\/4D0wKxf3cINWVBl8jJYrpJtByuYDFEioapo7xsbQ0Rv0FK+wZte0d2io5UINhhGqW94B0zU\/2ZtV4vBL62xA+ZhDkYXqMLd2Y677AH8YbkCuLHXcADLAmu1cvr8liLZwMQpmaLQlow15ttShDRSE5iWBsOY3t3mrhgJYXKYFgPTt\/pglAhxjY+3gW0Sh\/5Kl69ejGfkTDzb9NKEZY9VJTQHpFBizWoADtW\/jpQIBu94FtHp\/38UviIybZaBk\/UIUBFomipp\/yvKeVHE422lB+nz3HK+axzSz5NsSR9Q8hecNRKZ9GAer38XPdcA6FD7vFmX33du\/Gu64kcI6FKzgVdMTdTtHCWp4orT7aRT3U407Ew2AZGD7VPWlKAIx9uLiNP15+\/qMsqo8tVH+oVeFbatCNckGeZgg6OWoG6IJqs5cuSmF5Nd0HhVmeg21VKghB5I6qEVxf3FDBqyFNT2isZaPNeRVUoc1IMCFaX2LwUD2uUZaMtJgppIqqMXnFQOmBXi1X7gXrlBeEoSrCsdwINqGS+uf2Nad0+JZ0RE6GHTnXxUZLb5LQujvsihZPabZy816iVbNyqP1NeUpaju4ioihAd\/3Fu8HUV5+pA9mXE2\/zf64IvQhTay0eJFNwxFXEvF5Rav1h7EasLHcajVgpoWDRMc6fP1KFmW4r93AdPkNI38nhYaDUPRAk9Fk1gA8IZ7TpzSJlrP6KJ5meLeIFiLWf6I8fy9ZEa3zlEzT6g5fU7qeDKhoCnCCaUc7KTAQ7pCzEtleOB5GogbIQkeLbrJlvOjMneClJQjoH+YknE5mzuQ0mAQG\/WM6CU9rcxC+JrQmwRk1J8\/8yfR8EoT0m8EkPCd\/TP1JUNz0bEIcXMUvPmTN38P0CWaTWTDBsjWwyX1CZzIN2MX4VVtP2HpqYxklT\/R1vL\/XKTk+uzq+v60\/sq+V9TdaTfaEh+nyi+y5vUl4RkelegGPhGIEPjlyejEJffImwXRy6pFT+MrApAb2f0Ur\/BRr+hR7PAO8ZDbmzb6r50bDXKXCvT3HOelATCfTWxa9CtN24xzco+wq1y7N9W1hObMgIzibyUOWM6DKvsBDQm4KHKVMoQYlD6vXfzYqrEp+lW4hhr+z0JUmKHY4HBTA5QWjsjnB7x8AAFu\/q+bU4rRgSQEtJW\/LqtS9LbnM9ZwlPbG\/66QnuSs9sK4bstf17nVhxhlBPCDZe5VRRj6oGl0x9QxQpMKDjXd37WY6Y0pNSJUVqtTgXQyRMHjVDkt9ZzqVq3+ULZn2UDB88pyBQ5Un\/GAB1SLOJ1MsDC8mp2dUR8OPek4O4ovxH\/jVylNnVD8pdK+AnjprnPLJH9OQXoPvUH0r\/PWUD26Zsx3nRCz6bjK7fEv9kLHSiZvnCy7sYuKe3hYpPu65gIN2vyrK\/jP49GMDaAUApb5XIYODWsOIqTxAWUEW0NMO\/qrS\/qoIsE2z9xe0tpk9QnK64S6n458AO2v4pzszq4N4zMqQITCzW2m8dTonAfg6Qxn6ex2v4rxZKrR5WHfyHYL9qLUidYKmHNA6V36UUTduVwQ2U9VmCRmrKgL\/sjyw0DWIBkEN5d8pW39FlyqXdtEE\/IitzffVmkz\/0IAPAhxyZioDHMi4IYDTpErSlaexzh7df3\/4E82p87xwebeX6nrLVnvKNRUGUWHMspGWaHMu0iH0dvzw2\/GQr\/0EFI6tEGwpADKYAdT\/1VnXbUSr2TNkXw0iKGVuW1rxlgIasFOGp50EzACDfjHr9NwbCiPQ+k7d3BN1agXhYbUb7MSq3GL\/mexwEzT9W+z9W+7Dg0aGOVxYRN\/OxqbLVbJzFJXsNA0uBM1zjO1Pxic5cV8YXGsRaM3U1SvokVimqSPXB5jTrNs9XIAuCSc6PaeOOpcEQNROwUb4EQmMuDjwk+LHPKXPZdNIJ6vtTiVRY41rXOJvPbXb4144YV3qe\/Xp+51OTosX9eir0zcOLyazkHg2T+l9phcEMPJb5mRqNobHp18PGteE5AL8K+QnpmTA6kelgVunIXOwztpBcMWjeiSgjfyEQ96CxHQxd+rBKXJBXhGPQWBTrjjkucLiRYsnLaDYTBF4Lf3f9+6aNjPpMCHqiVFMlg0sfbyI7GVdsMUl7sNH0TDdrbkOMjE6fliHLRY\/2yjAvXIqhzMiJxRHc0iQ5Pjf+IjFxOIFOYUFzZQJHRKoUQTS0ohavByFxSmLXuORZSowoG8xISj1jS84h+NekbL4qUhcbEijhTcH9v5j5ZDLxbh6QGEh0wHkkOtLmETB\/6AcYr7wlhzqWsdcuhxyAOvgdge8NgUqisxxg\/aS7oQdrcSVZ2FYIq24IJUGicoysblY+69rpHBkGAiVGf9ZJoE2EA4ErWsojYyZKBoI8SvZ5NAtEYYXWfSCqoqZF0WJrITOwIaH7jIpD2pX3RDcAYuiusm6rQFYy0Hf8suymLm6epkGvD\/gUAlsZYBvDMuYJYtimmswh4A5apCNsyHknajS36IkegL6JGtlWpEyHbptZdoPREHusND3NhNkLOGidWdFig3NJ42A54oTxi2eaUuUp8klngpRMtddlhuTXkZg+wakhwPN0tw3Rj0L4e2FRYh++hrrytZDwQb0cmVg++IWGQC7oZbVjaqWy1Y5aw35AMiByHZlkDs6sl0OaFBkO4iajNVXFMpbVt96y\/wF6ca6A1EG9G11a69o22IJDLWZ5P73NFsuirpg9E\/dOnsoxkAcuzqMgRrxeocsE00gFF2dArVxxvIGrjrz5DIp3VBnEy4fQdu9pBIBcNyqI8KWfKQXPHja2DnSVhno+aIMdKjU+vbk74s0o\/890oloMkEHurwoA52Z4eSGaJQlgliQxkRyiAZLymmGaLjlOqm6kiKJA5g0LZe2z22J5JVSdLcEf5T7o0tifH6MAJOkNl0rapBhONYJFwliAoUDoeBOGVlhrs4K2yl0XRlBHyCCUmSuqGYL2P2CRqv9QYOywsBpJwGzjVlhetb1BxDKB1M264BuBCQmOiA5DED0sGCJbGbABLPJ1GUpELQ0KB6701+vhK5l+D63GNqWuBiakE+f7y\/WC9SPUwOeKfotpbRrGVAVeXx8zW\/X4Aa8ax6fZYQ77iSxergIKJtUi\/gHm1BkapICKPkzaeyweE+iF+o9iEjdBHIiTqqzT3gIaboB2ZmScw\/RChFTxvo1La+KM\/LfojHlEylcd0J2us8xufqxrq7BpnbjQYBno9\/CE3JJfySl0QLGI213g6L5c\/lLWHazH9t053+szHC4nIQghEpfVpOnlR1lD5cZ3khZCeNVyLVEycPm0fgZC6w09P9W0ocrDiHb16u2KJhuwM0HPuFanngN5Jp7xmK4D+QGMmfFARgOBB2UCcUz2nlhRtPsivS\/c6C9RJV0PDAhjmmm9hT\/w7toPv1yyqiQ7BYwydgMLzWAZYVFdg8yn3\/cVjRsqjSnTyA9tXaD8uhwRSCCgFvDJUq3zVUXGpqVXJdmR61w4p92vnb+jOZ\/HTV\/57gKg6nU37LAstE+Q1\/aMJrHWfgM99HY9\/7lsxt3X\/64Qm\/Ldzyb3xJSZbJx86o5Scc3Ff1L5cgbxYvA3qYSn0\/7\/BL9BveaPAPEFvMdb75jKBu5muV7FZ\/2+IWJf9792mItIgvOxpWHyyHduYDs\/sXTkBZ8oIte6EBNigLyVKezqmPARedhs8\/51G\/geZqNjP6pK1ydHFGF7ZlitI8LlVQyXRlrXIeOng07yyKOXtJkgXfSyYQ3r9S2F8vZoFVWH2qtstNyx\/JQWhncXd2DKiwxPtdrz+9riTEDb8edZFVU8r22Vc\/zd1RUcrl33PsLfvsLg0swAe0h+3DV7MZVYAfUm6ssaeEwXOWqf\/l2X66GPMD8nQ7G1ZAvirHvF4IyM1AaVz+YzWQwrRmFWzuOkewpdZk5hpY6c3UAmwKwfhPSImOkUs555TkqtJiijte0Lpezo6DHP0d7cbjVK7DE4FYTUl5kNFwMxKwDhetBX90Fqga5uQPaQVYIg9vQe3zjoc4rhBnsuJO8icruLFTZrlrKtspt61rbB8gJNrlV1jZF8VCZ2WSHVYWi7ahqs9Amyue7cm7qzNAa7Wp+DYq4gsCV0vzI2i37f8GIq\/1BgyKuwBkpATMx4mp29eXyavbH9PqSHI+zfB2Rb7CMo59ovs5pbsIRngsRWWnO0TKP7uIXVBhzZ1TDuis8\/VTren9lp66iF4SX+wxFi1VhECtOGmfrjAxZcaq4uCru8wWrSs+zH\/j0DXps5ip+eyfyYokIYvVFn\/AZMlWzeIG0\/BhGRSh2TJn8EO1ehwozCgEF8aDlwm3TODHd0AvdwPSd0ODqehjc8HdWDu3QOTFNx\/ACxzENz2lH3bt8GRCJqqKY\/LQN5X5Gzt5YC5sB\/5Dgm9xW2zKcE8ujfVMCM\/T4cJ3O4BtOm0YmHyy4t+1oCCFES+J0Qaa+EU2quLE6TszI0wkLPlvGdJ1IHwnYzd6JJycnNEYtxddlBJw0I3cki0tU3Lu4Af1Ghl4QHZ78ma5qhQLK9Qdqx509oMc0Q\/Qr9IT4lOQw77b7p1oeTJuzaoY2sLUA3SaGhICR8IOZ9zoJH9airNVl\/WBRZaYhbuDLCE36r9VLRK8vWqOtC+qTeficLhfc5BOnw8aCL\/8A6vtc8K7viRuvaufdqgAtBTZxWw30l9UWlnEsLB7vknE7xurLsLBUVkudQ7OlWaHRHdXNhhQQQymdhA0gD0pbUvrABphS4KknAzUgbkPPvMEQAiYIhTPvf8J\/VY1iS23s6vlV0s6MS4MS8s66tzMLd9xJng3CBGqk9UFbcaSVYIxgQWYt65R1wHgWlw+Ys\/rGs\/icd8o0O8az9IHfFSXzx98xCmxwAFkgXMTs\/AfYUzLt9x+TCVap2K35x5T+Q4ywqHgUFf+Egdd7PjV7vmObk1vHoSm2onMgz4nP0meGUUA0p7er8k6pe71VjndOWEgzEKZlRq9WU\/k47mEFt1V5yrCStANufK4KrMDzExHkjQb49JhGfBDiUNVtZYgDNUAZwFMsJvG4LxH1fpfpip+\/vUOHNeJDEIeKbqtC3A6h9gk0XM4yLr5GOX6RKbWr1y0UoKM6AGIY5mDNbnWgi6HObJpfkAibjE3vCQmtqT9rmIfCbItmJoXSXDTSV9L8S\/SCrlD+lmYs9fxz+6MGehDQ7piKmida8mu9jKXjXmNVLF4R0V2nrGqIB0AcjKqZiYErIsRleOPW3BMNbhdwLWNEJawqDL9xo9WG+jbPUPSCR7naaFdHvpaVsTT2A7AHAooUYg\/YVG5RzpC\/bzezmpQFBzTEA80oY+phW9Rtqod9SxfoNFqhz9N1TmyX+Ts7qlEehDLQYFQZyhYQ1VZnHV3evmPV66VAufygwR0Crg31P1InpUUzSQUumaysm+Tn728JHtzmIQ3zIJihFkjKYPZFLbutiN39jqK\/vj\/8ieb5dZ7x6tmU9AHP0uWSNjtjC3bjz\/o8bUipmTGEGVA7JXXMEAXAXsy4XhJfyC5+8FdplgxmCdRrSR1LRE1vP5ZEb8kGZuAzmg1D2eBATZjUsWGX\/xRmw\/QMaw9ZRN3lMBnwPiFtXKR5MZgXUJ8mZbwIxJ1CJ15cP7+v4vnqt3S5JlnQEDOu0uQcPUbrZd66WDNkMEO8MfVQoBeCAN+vGJrfA7ewo5YoIzbfFZXEukJtrdUdtbcKn1sbA\/xB99wbFjFjjCnMPVHle0jTZYF5UeR20vTRVBWJNcxDA6NGddGIulw9tYlyfsT098+ltq4RHoywO+oOX9TKSoRP0VOckK25boA9ENBg1M24mK\/MmtajnFhob\/FooaNp9Se1zhMlGr1VxzTigxD3jFE33GIczAqPD+0nVeQqUF0rQxhY+vHo5OREIzwMYXtMbQvoZk79L7\/F6I2+6jImZf3wFV+KOc5OENHNan1puAfA7Y6odVmuqFyXIvwyifNiCrMCbuRIjMH5b0R2nb+RbxCb6uVvtxPWqwG65OiTFgDDGBGMqKVZQE5KyYgb9BrFGeUEXt9zPLIrra8NzEQwR9TXLCD5pMonM2iLGvpJr9nDcbXH1MoAIX6oiosmlNQuZr4X1xwix93i6hL0rcftuNvvIzG\/PRCNnttw7VfMohO6YtK6L6JdUeAQ8B5ztet6VzAwrR03ktWQgyvrfsx+WFa7DBNou9AKihS4pLPLFWWXW5zMsH1x9bd8YJWo8skGJaUxFyxPhJZppjpQvbPWAVqzaFDNdghcKQmHlmiKK7BFq1XZi7HxUWM7EFuotLs6bEWj293t+oHGNH1\/rIMX2qFNLEoBHz2j0U8a82GYA1njCjGHklYAzDcHPfKnNAlkkABKI1fHAluU6ptZUKzaPAHoUY29FOyB3HJl2JtACy4I+3\/dnzcwx5801lKwBtLL1c1z1lJ9B9YtZb2BenVcYy8FeyDvXOFK322eN7V3DvniqMZeyqYNSEtXJ+OBRnsCfL9iFGoP3KAeFRBuMqJQgfZ3QoMt4gmtQ2A+6Yk5FGAggUChUAbc4psQrvzjF7d5hke61dkseiWt0rhGaOJ131\/Lzhpn8PlZlqXZNyzooyekuTTcMjfqVl5MNRC4dEts4GUApEZ3ILpAQoJC1V001NToVjOZCosr9FbsyY8Eu00ZFCmac1py4z6J\/16TomKXixv0umwKiOLU5WI\/SbPlumsME30H+k7G3ezfd0f4\/N\/rtACK\/fVJE3YoYW1rRLuC7WwTRyAxv6ZPcXJ0X5xqMXVSdgNF+U26RJTmN+glzVHxsSPFejG281wgd9T8HMRPZ1RbCJAlwC+XmJHpOj\/iUrxmP2MSlKYF0mDA\/RF1bRPoN60gemlzwwFgyMofbjb4Y2aaZqSLZXRtx6CiVwvXrMNlAO0b6WJbO24kMZQJ6FPdKt0kIK5jUdTEojisoikLO\/I8s9ucN1lZqGGTXjfZ2i25q9nyIWNOzC69n39F6+X+sHUNJ5FivNzTHIFXB\/904p\/riTkEYaAcpjoVOhCFK2i9pJk6qOgac5FmFPAytf6BVKX\/kuY3aIVyQoLr+5vZH79d3tzdT78etddse4r\/2XC\/Yg+mWSSHRUC5TYXiXQw7P1hWARuqj5pV4PNR3H3DzkNnx41kKuOi53kbsv3aJnbDl+1RP04eQTWvqlK3PRE95jdqwp0kZRIcm6bb5g5rZicrlcCCmlJLZ0zdAPAkDJ1Jqwmg4fvswDXK8BJFd37b27\/vFCRW555\/CojmCBO+b8tVvl+5eCd5ssMCWltjFeAxnZClh3TRA2xwei+vrFN9C3jXFZVNZY3qLd0ue7eqV0+XD9mo3jL0Tl4SbCM2qrcMcSevZ95wCMdsVG8ZH2eTVQ3V1k0WqxZ\/mPb0slwexo4bydSUgPTbVg0NrSeNpCdxalLgiBO92gpI93hYBrDb1tKal9ZSsmwhEKVIa1atRetJQ2GDPB4QbDL0JLNDuPZVmseP77oOpSR4IXeHulkp2iI24PstyufP1LmFFhriYRBDvgh1EIuGx8OpyYCt+qCRQMec88HtW9No130kasWmaHG4oFoxCekj01ArxSMZDw3bPeH8BqErxgLZNqQZ21LW5y2ddzeUHm0c1VK8luLVrBqiPoNIyyktKUpxuMcfPqDb\/MkFGlC4lQFtAxpZWR367jlelU206QEN6hBQgZI06mav2aEM4a+4+d0fNqiIDIiblNVVtD9qu5MEDIHuuArnnmg8vJ8lT2S2aYf76Dqzb3PB8xYr19Us98vkZUth5rdUvdhgiWbIu8tkEWdonrfa3HFbqqJsCD2m+9VxAiDsTILNmjMIuRSFCqjcDRSJ2bJrajYzpNJfvEQXkJFBC0DPVkgLcUO1jRZfU4wDy9zl+NA4p4kggwiAbq6QCJ0KBVZdkDn\/M0eF1llNBhlkgDR+ZWyoNRq9UxuKG1DyEcRNxk7NEqV57ccq83K+ptHiW\/RKeiHyyl1V\/6B9nNZAuL\/5ShYA8m9aRYGtCNcIq43J01XRyok2ViyObK9ENCEpPVomDOXWqCtEBycpyeE6uiz2lV\/T9LXoplp\/1pgPxtwbdR0QMT+Y15SN1UfN4PL4DK6+aRgBn9ChMAvDEmPvVZTOqBNyTCEhx3AnQxJyKstJy5vOyHIIIgRcOYxju2\/mVygkBXbM\/OpFBaBv42wR52nG7ITaODiScZBD3fFF46C6dByg2qA29\/MLtyXDT64uKcDSnjZJsI2ZjgPUjNUzbziEo6bjAMXYqTFdr6GjrqEh16Tx2AVYYDPtt8UCKRFptuhuEQKUdGjShhkuw5MGYyvDDuKK+tHd7TN+gcU1qRPaNpRf3OLp24g0rAzl7ePaKjKMAFBsmjoCAJ21fkfRXwD8t7\/HyQIPZbvfBoO9PKnBHwY+FMOmCnwLaKilNetesIExbBBuUtZj0TOCF1481PhYKb1vUOXmFKftWYaiHJHJW5zSVfaH4w\/Fv6kT2oD3ovBZ1NAyuUx8Yx3yBlhcjPZkDecC4MlSyAUgnbPgwveknuJny3SFFoQLrGR8B0HR8KHSM6cIo1PcSRNFBlEA95dCogBlMEWifMMDKYUn9EaaJjJoEnbd7TsyaCIqF3U3iuY+j64gRaRE6\/jRhtWmfeRTRTFNj4H2ArOrFJFAD8v+QE50sAnBIZ2lpsFb6sy+NXlMy911K4nuUqDLyP1Wi5429SrKPxZghzr92axCXXt6WxLmtyOqk1h0red54bxpRdkRqc5F3W1MvvmFRXo1uQaZgEHIZeiFQCWmu1baTDNQ\/nPDjNA4vNLQS4IeMv4qgz4Qjb9VLOz3hFj+ym7KNAW9eUDjLQlvyN6rDG+gxPnF1whrb\/l0Tmyo36Ikeiq73ImHi72ehl0G7KC9WN08FyNoLkhHi6wBePOzRloi0kDOhDKkKx1Qe3QG4+Z2VMJkeHQccVddLcRFsE1pbSk+HNXWEz03h2AMGWCVSeEuhRdpNb7mzlvX5RsIMWQ8VbfQiuE0+LWIv9aYLhaNDdNRO\/vYAPoIsy\/WXV0vF9qYPnhrbY64t7aA7tIHs5aysfqoKUc+Z\/kye1pOA66audXNbLpvfyHB1mtJ7i4E+Ou2kUZhPyqQOpX1\/SCGdtvnzaR9E9RMl89QEW4l0dAOhNsdClQTSjVjSB8GVK4k\/bHdVwaYrpC2xt9KlhiwhQRHz9j+bMI3WKVZeaIDyHqSzrKBLcRNF0x1PGTOK98xrHflYJ8nssrawW6H9KhDipTDOmR5OeD0dsiafP6qcCtJIiV0uHpqvmzVwgPyetjWg2OOdvSqcfQe89KmKk\/QrIXA2Cu\/\/wrjLmBxmpZ1r6p9Jy2Ewh0TiPIL70Kr6TSoWh6EtZRNqK+j\/CXBBlWzg2CTYRL2LQG12dWXy6vZH9PrS3Kcr4U0+4nmNNi7KC09IcVqyqLStMgRi+c8+9f0hpw9eyFnLr6v89d1fo5+xCTMpw7lnGbEyEwmVxYvdErfIN4A6ZoKpztQBQUmDrM5v8X5\/LkW7TT6d+taUDax15ToTwmgX4xCSnygoE02VB\/VDHnMR+BVNpG9W53zBkL+RhI3gT5Q76blYdBq\/ThqfcAZJh3IxWhCar2UVH1\/7+YxfAKYFupM8voyyuKAWMsR6rosjiTYoJhLCDYZExQIxaoVsjrBhiro0XJeHTg6OTnRKtcgmKGiKcpmZ7ChdE6rZgoSQj10VM9wnAHVWqEUFstcCTvz29fojfZRnc7zNDuq0+mEcsJFSWLgBN6ll6WGz6AtvpYMgxgDZu+ro4woGg62G\/Mhjw3boh1k++VyvjPH6Lv9cowdd5K4\/wpEc\/r9FSKsTRCNoReg1TswRTswh9+BhR2LVW4rOFr+3A0GM0qe8Cvu+XtdTDvREqOdRDk6TddMGAyhJGD21wUYubWimrcfs\/RpIDoBBPR+xT3e\/rCNWfo0EM2teuYNh3DU0qfBKLXkuylpbKg+jpJmu7KUNDMcT0kLASXtdp7Fr\/kOI6jW1RTpahaHvt9xikupDR9qBWm3mA4\/toIUagVJEmxjKkihVpBUQDiqghSKhk+w0apeSkdyPHMqGQsLb5ChWl7lh5MClSVqI3UZhaandjW1g87wbl5UQTTlVAQSgwh0vX9l0AILr0JoxS2Q1pd6wQYU7gFhk6Av2ca2ygHN8F8dJDAUVsB5rHA2iruXgxmZQsDI9KHiMiuHLGcr2N\/k5G6\/kTyLk218oMBbNhdaVkSG+kEQdfg0yQqZvTG1+dxN4VYyUf04mfkgqP4hp2nAgdq7jsOxz2fIdUzh7gXph8nLF2Wuc0A0eVlpmr0t\/RbnJ7dtrxOce6fPcr9jsoWj85Px3xiccGsbHyZH22R0ai8DwSGXAW5hP3b6thiuv8mXVlAiM4AOlwdaBsACLQcF1eYT7\/sLDlNQEzr6CPeu5eEwSOtf8nfIDl98T1+y8GAGOrXVPOqu5n7Vw\/w\/k316l4OxhIcsKHNsmg6\/5vSt\/sDvPhRVlSLc5uy49g4GmgYvP01zB2tNR+hTYEpn7RhKMqtBU9SdqarQNPlstsjcvT5Np3JpzgFFrCkEHvbVtPke7V13xHvLV99zwSfeyFPDgV+x8xcs6bT+MBuFyt13CPI5vPjoST1WRI7JZ4czl8oSq8IqvUuqcl9gDyaNR0APxyltpcTq63Oc0n5TRX5T32zLJJ81RW1agNlyKT1h1wb6KV1cYR7gQyUV6Cdd9rUBcj15BvlPIVClmPXtDqrPL+hk6wEb5BuFYJMyE7dl5palUqaLxXTxEidHYF0Ueqo4oQs1D4UeCGZSOGNFrU7A\/gY9xSu8wJYFvEEGcCW8uR6azZ7qLAf0Pon\/XqMrlF8uoIaaxWlyjtyvdPU+\/B6tLrL05TL5EedIU20o1SCfrzqqdUgY\/r94\/tc2mpHzmE4A0y7uij5sFYHIpTd4wNJE82QoT6A0YYVE+Ti146uxapn2mHP7EPtPzmIR8ua4zna9cMeNhm5A2a6iDJCUtn8EOsZso8VQo3BPIxpIHJtdeRhvE+ci8no7m3gXh3AnWcYL4Yc8yUYtR4zeVUCmylZr8cbaTlyyDCjWwTugBZZjkt+3UJzl7LiRLPsr5yhwnR3W1MDddv1w3nniRrnUd26xJqC7Do+Xh8cxMAyA3ZcBaDpVB61Bqo4nbr\/isvtRQQe8AdLKa1N5rWbOIAsYhKgU3RUoOd3c6d6g12Vzc4tfUad\/DUYYMpapQ1hMJNB2a\/mYQlkGyjD1OrSN+RXt1vvDBrX3BXGTYbj2Ohiu28bL3+P8uZylR9qmqIYBkK1I2cwFKs4IFLhPso0k0HgPxtseVVKLRuSD2QbZWH0Y2+CxywWt97YOHts9zYO9NsOjGGEGW\/QguMWchUNmoHCYmb2zivi0gK45RfsHfXLbb5OlM218MiFjYd8vGGWBK2m2HKBfzf33hKiLRc\/yS2KXeYyAbHFt1VFj1eGNOseOA4Q2uZBVh29X2G+LqKu87NY0qmkzyJADgShnm69DmSTBBllnINhk7AiBbjBY6uGRJtsAUCiX5ej1RmAwzlDckrrp2WHrf0vXu3KjJxTlIcEjkOGuOFFwpTxOb3SWvrwuUd5qFXeZlEfxRedoiZ4iYkHQLBrAIigkSRmLgOLlAotmeEshgUP4NppBozAINECpo9C2CjVwACXpdjLxTyf+uQZ6ENCQ5Ukd0OI2b6elUUMtC2qgmZxC5eIDBSCysfqo1Ylszr5yLGyhuxqdXHvXneTZHB2gHNzFV7z2JvmUdi35FiXRk24fOZrJxvT4xGwPKIlte5Y45aXU8XSASnN3tyhnaQv33x\/+RHPSN5KlKhjXWTrHuh0ilujVRaad\/hwH6jk2qI0kBLkMKe8ANegE9H5BC08P2KA2khBsEiw8DlCitVS+yvnYlOKro3re4q1W8XexO8NTIyKLD9505dFd\/KI9\/4NpALWZVDd7Acd\/wYNTrIInVB4f6Z30IEChfpLqAB2lbMrw4ihAdRSbFQE\/SDUUj68SZfWu9cOXMKwTMGQH5AcsULZS9i2Xo8swt6wzSmFDVXzyD8cnl68kF\/QNIuFjSI4DnpiS2GTzO8egHRQwnEzj1HQaSibBLsBsVttLOVkHFF58FTm7byqRaXK87Wo92Jdsls2V7mHZUBsjULhpwBJnu17P4qN6khl\/zNI0b16eRa\/P39IFIlf8Pw==&lt;\/diagram&gt;&lt;\/mxfile&gt;&quot;}\"><\/div>\n<p><script type=\"text\/javascript\" src=\"http:\/\/www.pariya.cc\/res\/js\/viewer.min.js\"><\/script><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE41.png\" alt=\"\" \/><strong><br \/>\n<\/strong><\/p>\n<p><strong>AGameModeBase\uff1a<br \/>\n<\/strong><\/p>\n<p>GameModeBase\u5b9a\u4e49\u6b63\u5728\u73a9\u7684\u6e38\u620f\u3002\u5b83\u7ba1\u7406\u7740\u6e38\u620f\u89c4\u5219\uff0c\u5f97\u5206\uff0c\u5728\u8fd9\u79cd\u6e38\u620f\u7c7b\u578b\u4e2d\u5141\u8bb8\u54ea\u4e9b\u6f14\u5458\u5b58\u5728\uff0c\u4ee5\u53ca\u8c01\u53ef\u4ee5\u8fdb\u5165\u6e38\u620f\u3002<\/p>\n<p>\u5b83\u53ea\u5728\u670d\u52a1\u5668\u4e0a\u5b9e\u4f8b\u5316\uff0c\u5e76\u4e0d\u4f1a\u5728\u5ba2\u6237\u7aef\u4e0a\u5b58\u5728\u3002<\/p>\n<p>\u5728C ++\u00a0<a href=\"http:\/\/api.unrealengine.com\/INT\/API\/Runtime\/Engine\/Engine\/UEngine\/LoadMap\/index.html\">UGameEngine :: LoadMap\uff08\uff09\u4e2d<\/a>\u4e3a\u6e38\u620f\u73a9\u6cd5\u521d\u59cb\u5316\u5173\u5361\u65f6\uff0cGameModeBase actor\u88ab\u5b9e\u4f8b\u5316\u00a0\u3002<\/p>\n<p>\u6b64GameMode actor\u7684\u7c7b\u7531\uff08\u6309\u987a\u5e8f\uff09URL\uff1fgame = xxx\uff0c\u5e76\u5728World Settings\u4e2d\u8bbe\u7f6e\u7684GameMode Override\u503c\u6216\u6e38\u620f\u7684Project Settings\u4e2d\u8bbe\u7f6e\u7684DefaultGameMode\u6761\u76ee\u786e\u5b9a\u3002<\/p>\n<p>\u8fd9\u4e2a\u7c7b\u7684\u4e3b\u8981\u5185\u5bb9\u5373\u662f\u7ba1\u7406\u6e38\u620f\u89c4\u5219\uff0cdefalut\u73a9\u5bb6Pawn\u7684\u7ba1\u7406\uff0c\u73a9\u5bb6\u52a0\u5165\u6e38\u620f\u7684\u884c\u4e3a\u548c\u521d\u59cb\u5316\uff08HUD\uff09\u3002\u4e0eGameSession\u4e0d\u540c\uff0cGameModeBase\u662f\u4e0a\u5c42\u7684\u89c4\u5219\uff0c\u5b83\u6ca1\u6709\u5177\u4f53\u5230Player\u7684\u64cd\u4f5c\uff0cGameSession\u5219\u662f\u4e00\u4e2a\u5177\u4f53\u7684\u4e00\u6b21\u4f1a\u8bdd\u5b9e\u4f8b<\/p>\n<p>\u65b9\u6cd5\uff1a<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE42.png\" alt=\"\" \/><\/p>\n<p>InitNewPlayer():<\/p>\n<ol>\n<li>\n<div style=\"text-align: justify;\"><span style=\"font-size: 10pt;\">\u5728session\u4e0a\u6ce8\u518cplayer<br \/>\n<\/span><\/div>\n<\/li>\n<\/ol>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0GameSession-&gt;RegisterPlayer(NewPlayerController, UniqueId.GetUniqueNetId(), UGameplayStatics::HasOption(Options, <span style=\"color: #6f008a;\">TEXT<span style=\"color: black;\">(<span style=\"color: #a31515;\">&#8220;bIsFromInvite&#8221;<span style=\"color: black;\">)));<br \/>\n<\/span><\/span><\/span><\/span><\/span><\/p>\n<ol>\n<li>\n<div style=\"text-align: justify;\"><span style=\"font-size: 10pt;\">Find a starting spot\uff0c\u627e\u5230\u8d77\u59cb\u70b9<br \/>\n<\/span><\/div>\n<\/li>\n<li>\n<div style=\"text-align: justify;\"><span style=\"font-size: 10pt;\">Set up spectating\uff0c\u8bbe\u7f6e\u89c2\u6218\uff08\u5982\u679c\u662f\u89c2\u4f17\uff09<br \/>\n<\/span><\/div>\n<p style=\"text-align: justify;\"><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">NewPlayerController-&gt;StartSpectatingOnly();<\/span><span style=\"font-size: 10pt;\"><br \/>\n<\/span><\/p>\n<\/li>\n<li>\n<div style=\"text-align: justify;\"><span style=\"font-size: 10pt;\">Init player&#8217;s name<br \/>\n<\/span><\/div>\n<p style=\"text-align: justify;\"><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">NewPlayerController-&gt;PlayerState-&gt;SetPlayerName();<\/span><span style=\"font-size: 10pt;\"><br \/>\n<\/span><\/p>\n<\/li>\n<\/ol>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE43.png\" alt=\"\" \/><\/p>\n<p>InitGame():<\/p>\n<p>\u901a\u8fc7World\u521b\u5efa\u4e86GameSession\uff0c\u8fd9\u91cc\u8bf4\u660e\u4e00\u70b9\uff1aUWorld\uff1a\uff1aSpawnActor\u5728Create\u65b0Actor\u540e\u4f1a\u5c06\u5176\u7eb3\u5165\u6307\u5b9a\u7684Ulevel\u4e4b\u4e0b(\u6839\u636eSpawnParameters\u53c2\u6570\uff0c\u9ed8\u8ba4\u5728CurrentLevel)<\/p>\n<p><span style=\"color: #2b91af; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">AActor<span style=\"color: black;\">* <span style=\"color: blue;\">const<span style=\"color: black;\"> Actor = NewObject&lt;<span style=\"color: #2b91af;\">AActor<span style=\"color: black;\">&gt;(LevelToSpawnIn, <span style=\"color: gray;\">Class<span style=\"color: black;\">, NewActorName, <span style=\"color: gray;\">SpawnParameters<span style=\"color: black;\">.ObjectFlags, Template);<br \/>\n<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0LevelToSpawnIn-&gt;Actors.Add( Actor );<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0LevelToSpawnIn-&gt;ActorsForGC.Add(Actor);<br \/>\n<\/span><\/p>\n<p>\u800c\u4e14SpawnActor\u53ea\u5728World\u4e2d\uff0c\u800c\u4e0d\u5728level\u4e2d\uff0c\u66f4\u4e0d\u5728Actor\u4e2d\uff0c\u539f\u56e0\u662fActor\u662f\u5b58\u5728\u4e00\u4e2aOuter\u7684\u8fd9\u91cc\u4e00\u822c\u662fLevel\uff08\u5927\u6982\u4e5f\u80fd\u662f\u4e00\u4e2aComponent\uff09\uff0cLevel\u4e2d\u6709Actor\u7684\u76f4\u63a5\u7d22\u5f15\uff0cWorld\u5219\u662f\u901a\u8fc7Levels\u7684\u904d\u5386\u8bbf\u95eeActor\u7684\uff0c\u56e0\u6b64New Actor\u4e0d\u5fc5\u5728World\u4e2d\u6ce8\u518c<span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\"><br \/>\n<\/span><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE44.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE45.png\" alt=\"\" \/><\/p>\n<p>InitGameState():<\/p>\n<p>\u521d\u59cb\u5316GameState<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE46.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE47.png\" alt=\"\" \/><\/p>\n<p><strong>AGameSession<br \/>\n<\/strong><\/p>\n<p>\u5145\u5f53\u6e38\u620f\u7279\u5b9a\u7684\u4f1a\u8bdd\u754c\u9762\u5c01\u88c5\u3002\u5f53\u9700\u8981\u4e0e\u4f1a\u8bdd\u754c\u9762\u4ea4\u4e92\u65f6\uff0c\u6e38\u620f\u4ee3\u7801\u4f1a\u5bf9\u6b64\u8fdb\u884c\u8c03\u7528\u3002\u5728\u8fd0\u884c\u5728\u7ebf\u6e38\u620f\u65f6\uff0c\u6e38\u620f\u4f1a\u8bdd\u4ec5\u5b58\u5728\u4e8e\u670d\u52a1\u5668\u4e2d\u3002<\/p>\n<p>\u66f4\u50cf\u662f\u4e00\u4e2a\u6e38\u620f\u623f\u95f4\uff0c\u5185\u6709Kick\uff0cRegister Players\u65b9\u6cd5\u3002<\/p>\n<p>\u672c\u8eab\u5e76\u4e0d\u5b58\u50a8Player\u7684\u4fe1\u606f\uff0c\u53ea\u662f\u8d1f\u8d23\u5206\u914d\u81ea\u8eab\uff08\u623f\u95f4\uff09\u7684\u4fe1\u606f\u5230\u5177\u4f53\u7684PlayerState\u3002<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE48.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE49.png\" alt=\"\" \/><\/p>\n<p>RegisterPlayer():<\/p>\n<p>\u603b\u4e4b\u4ecd\u662f\u8bbe\u7f6eNewPlayer-&gt;PlayerState\u3002<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE410.png\" alt=\"\" \/><\/p>\n<p>Login():<\/p>\n<p>\u521b\u5efa\u4e00\u4e2aPlayerController\u5e76\u8fd4\u56de<\/p>\n<p>\u4e3b\u8981\u662f\u901a\u8fc7<\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">GameSession-&gt;ApproveLogin(Options);<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">APlayerController* NewPlayerController = SpawnPlayerController(InRemoteRole, FVector::ZeroVector, FRotator::ZeroRotator);<\/span><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE411.png\" alt=\"\" \/><\/p>\n<p>Logout():<\/p>\n<p>\u6ce8\u9500\u6307\u5b9a\u7684Controller\uff0c\u53ef\u4ee5\u770b\u51faGameModeBase\u5e76\u4e0d\u5b58\u50a8\u76f4\u63a5\u7684PC\u7d22\u5f15\uff0c\u800c\u662f\u7531GameSession\u76f4\u63a5\u7ba1\u7406\u7684<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE412.png\" alt=\"\" \/><\/p>\n<p><strong>APlayerState<br \/>\n<\/strong><\/p>\n<p>PlayerState\u662f\u4e3a\u670d\u52a1\u5668\u4e0a\u7684\u6bcf\u4e2a\u73a9\u5bb6\uff08\u6216\u5728\u72ec\u7acb\u6e38\u620f\u4e2d\uff09\u521b\u5efa\u7684\u3002\u73a9\u5bb6\u72b6\u6001\u88ab\u590d\u5236\u5230\u6240\u6709\u5ba2\u6237\u7aef\uff0c\u5e76\u4e14\u5305\u542b\u5173\u4e8e\u73a9\u5bb6\u7684\u7f51\u7edc\u6e38\u620f\u76f8\u5173\u4fe1\u606f\uff0c\u4f8b\u5982\u73a9\u5bb6\u540d\u79f0\uff0c\u5206\u6570\u7b49\u3002<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE413.png\" alt=\"\" \/><\/p>\n<p>RegisterPlayerWithSession():<\/p>\n<p>\u901a\u8fc7<span style=\"color: black; font-family: Helvetica; font-size: 9pt; background-color: #ebebeb;\">FName SessionName;<\/span><\/p>\n<p>\u5411\u8be5Session\u6ce8\u518c\u8fd9\u4e2aPlayerState\uff0c\u4f7f\u7528\u4e86UOnlineEngineInterface\u3010\u7a7a\u51fd\u6570\u3011<\/p>\n<p>\u8fd9\u6837\u7684\u8bdd\uff0c\u4e5f\u5c31\u662fGameSession\u4e2d\u7684Register\u6ca1\u6709\u5b9e\u9645\u7684\u884c\u52a8(\u76ee\u524d)<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE414.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE415.png\" alt=\"\" \/><\/p>\n<p><strong>UOnlineEngineInterface<br \/>\n<\/strong><\/p>\n<p>\u5f15\u64ce\u548cOnlineSubsystem\u4e4b\u95f4\u7684\u63a5\u53e3\u7c7b\uff0c\u7528\u4e8e\u6d88\u9664\u4e24\u8005\u4e4b\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\uff0c\u771f\u6b63\u7684\u5de5\u4f5c\u662f\u5728OnlineSubsystemUtils\u7684UOnlineEngineInterfaceImpl\u4e2d\u5b9e\u73b0\u7684\uff0c\u671f\u671b\u662f\u8fd9\u4e2a\u57fa\u672c\u7684\u51fd\u6570\u7ec4\u4e0d\u4f1a\u6269\u5c55\/\u66f4\u6539\uff0c\u5e76\u4e14OnlineSubsystem\u53ef\u4ee5\u72ec\u7acb\u4e8e\u5f15\u64ce\u3002<\/p>\n<p>\u6e38\u620f\u4e0d\u5e94\u8be5\u4f7f\u7528\u8fd9\u4e2a\u63a5\u53e3\uff0c\u76f4\u63a5\u4f7f\u7528OnlineSubsystem\u63d2\u4ef6<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE416.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE417.png\" alt=\"\" \/><\/p>\n<p>Player\u7684\u6ce8\u518c\/\u6ce8\u9500\u5b9e\u73b0\u4e3a\u7a7a<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE418.png\" alt=\"\" \/><\/p>\n<p><strong>UAISystemBase<br \/>\n<\/strong><\/p>\n<p>\u76ee\u524d\u4e5f\u662f\u4e00\u4e2a\u8c61\u5f81\u6027\u7684\u7c7b\uff0c\u5173\u952e\u51fd\u6570\u4e3a\u7a7a\uff0c\u662fWorld\u7684\u4e00\u4e2a\u6210\u5458<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE419.png\" alt=\"\" \/><\/p>\n<p>StartPlay():<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE420.png\" alt=\"\" \/><\/p>\n<p>InitializeActorsForPlay():<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE421.png\" alt=\"\" \/><\/p>\n<p><strong>UGameInstance<br \/>\n<\/strong><\/p>\n<p>GameInstance\uff1a\u8fd0\u884c\u6e38\u620f\u5b9e\u4f8b\u7684\u9ad8\u7ea7\u7ba1\u7406\u5668\u5bf9\u8c61\u3002\u5728\u6e38\u620f\u521b\u5efa\u65f6\u4ea7\u751f\uff0c\u5e76\u4e14\u5728\u6e38\u620f\u5b9e\u4f8b\u5173\u95ed\u4e4b\u524d\u4e0d\u4f1a\u88ab\u9500\u6bc1\u3002\u4f5c\u4e3a\u72ec\u7acb\u6e38\u620f\u8fd0\u884c\uff0c\u53ea\u6709\u4e00\u4e2a\u3002\u5728PIE\uff08\u73a9\u5728\u7f16\u8f91\u5668\uff09\u4e2d\u8fd0\u884c\u5c06\u4e3a\u6bcf\u4e2aPIE\u5b9e\u4f8b\u751f\u6210\u5176\u4e2d\u7684\u4e00\u4e2a\u3002<\/p>\n<p>\u548cUEngine\u533a\u522b\u5728\u4e8e\u5b83\u4e0d\u4fdd\u5b58\u76f8\u5173\u5f15\u64ce\u7684\u914d\u7f6e\uff0c\u4f46\u5b83\u53ef\u4ee5Get Engine\u6765\u914d\u7f6e\u7cfb\u7edf\uff0c\u5b83\u5728\u4e4e\u7684\u662f\u6e38\u620f\u8fdb\u884c\u7684\u52a8\u6001\u6570\u636e\uff1a\u5f53\u524d\u7684\u8fdb\u884c\u6e38\u620f\u7684LocalPlayer\u7b49\u7b49<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE422.png\" alt=\"\" \/><\/p>\n<p>\u6ce8\u610f\uff1aUonlineSession\u7c7b\u57fa\u672c\u65e0\u5b9e\u9645\u4f5c\u7528\uff0c\u800c\u5b83\u7684\u5b50\u7c7b\u4e2dUOnlineSessionClient\u53ef\u80fd\u6709\u8f83\u597d\u7684\u5b9e\u73b0\uff0c\u4f46\u5b83\u5df2\u7ecf\u5f52\u5c5eAPI\/Plugin\uff0c\u6240\u4ee5\u731c\u6d4bEngine\u6a21\u5757\u4e0b\u7684Session\uff0cUOnlineEngineInterface\u7b49\u76ee\u524d\u6ca1\u6709\u7528\uff0c\u53ea\u662f\u8c61\u5f81\u5730\u653e\u5728\u90a3\u91cc\uff0c\u5b9e\u9645\u76f8\u5173\u7f51\u7edc\u4f1a\u8bdd\u7684\u64cd\u4f5c\u4e0d\u5728Engine\u6a21\u5757\uff0c\u66f4\u591a\u7684\u53ef\u80fd\u5728\u63d2\u4ef6\u4e2d\u5b9e\u73b0\u4e86<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE423.png\" alt=\"\" \/><\/p>\n<p>AddLocalPlayer():<\/p>\n<p>\u6dfb\u52a0\u4e00\u4e2aLocalPlayer\uff0c\u540c\u65f6\u7ed9\u4e88Controller<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE424.png\" alt=\"\" \/><\/p>\n<p>StartGameInstance():<\/p>\n<p>\u542f\u52a8\u6e38\u620f\u5b9e\u4f8b\u7684\u72b6\u6001\u673a\uff0c\u5b9e\u73b0\u8fdb\u884c\u4e86\u521b\u5efa\u521d\u59cbURL\uff0c\u7b49\u5f85\u4e00\u4e2a\u7f51\u7edc\u8fde\u63a5\u8fdb\u5165Starting Level\uff0c\u6700\u540e\u8c03\u7528\u4e86Onstart()<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE425.png\" alt=\"\" \/><\/p>\n<p><strong>UGameEngine<br \/>\n<\/strong><\/p>\n<p><span style=\"color: #161617; font-family: \u5b8b\u4f53; font-size: 11pt; background-color: white;\">\u7ba1\u7406\u542f\u7528\u6e38\u620f\u7684\u6838\u5fc3\u7cfb\u7edf\u7684\u5f15\u64ce\u3002<\/span><strong><br \/>\n<\/strong><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE426.png\" alt=\"\" \/><strong><br \/>\n<\/strong><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE427.png\" alt=\"\" \/><\/p>\n<p>CreateGameWindow()\uff1a<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE428.png\" alt=\"\" \/><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\"><br \/>\n<\/span>CreateGameViewport()\uff1a<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE429.png\" alt=\"\" \/><\/p>\n<p>GetGameSceneViewport():<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE430.png\" alt=\"\" \/><\/p>\n<p><strong>UEngine<br \/>\n<\/strong><\/p>\n<p>\u4fdd\u5b58\u6e38\u620f\u7684\u5168\u5c40\u8bbe\u7f6e\u6216\u76f8\u5e94\u7ba1\u7406\u5668\u7684\u7d22\u5f15\uff0c\u4f8b\u5982\uff1a\u6700\u4f4e\u671f\u671b\u7684\u5e27\u901f\u7387\uff0c\u5448\u73b0LOD\u7740\u8272\u7684\u989c\u8272\uff0c\u97f3\u9891\u8bbe\u5907\u5904\u7406\u4e3b\u97f3\u9891\u8bbe\u5907\uff0c\u7f51\u683c\u7684\u7ec6\u8282\u8303\u56f4\u63a7\u5236\u7ea7\u522b\uff08LOD\uff09\uff0c\u7c92\u5b50\u4e8b\u4ef6\u7ba1\u7406\u5668\u3002<\/p>\n<p>\u6700\u63a5\u8fd1\u6e38\u620f\u5f15\u64ce\u7684\u5e95\u5c42<\/p>\n<p>\u65b9\u6cd5\uff1a<\/p>\n<p>UEngine :: LoadMap\uff08\uff09:<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE431.png\" alt=\"\" \/><\/p>\n<p>\u8fd9\u4e2a\u65b9\u6cd5\u7684\u4e3b\u8981\u76ee\u7684\u662f&#8221;\u66f4\u6362&#8221;World\uff0c\u52a0\u8f7d\u65b0\u7684\u5730\u56fe<\/p>\n<p>\u5927\u6982\u7684\u6d41\u7a0b\u662f\uff1a<\/p>\n<p>\u9996\u5148\u51c6\u5907\u9636\u6bb5\uff0c\u57fa\u672c\u7528\u5b8f\u6765\u8c03\u7528\u51fd\u6570<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE432.png\" alt=\"\" \/><\/p>\n<p>\u786e\u4fdd\u5f53\u524dWorld\u7684StreamingLevel\u72b6\u6001\u6ca1\u6709\u51bb\u7ed3\uff0c\u4e4b\u540e\u4f1a\u56de\u6536\u5f53\u524d\u7684World<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE433.png\" alt=\"\" \/><\/p>\n<p>\u5e7f\u64ad\u4fe1\u606f\uff0c\u8fd9\u91cc\u4f7f\u7528PreLoadMap\u6765\u5e7f\u64ad\uff0cURL.Map\u662f\u53c2\u6570FURL\u4e2d\u7684Map\u4fe1\u606f\uff08FString\u7c7b\u578b\uff09<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE434.png\" alt=\"\" \/><\/p>\n<p>\u8fd9\u91cc\u6e05\u7406packages(\u8fd9\u91cc\u7684package\u662f\u6839\u636e\u52a0\u8f7d\u65f6\u673a\u5b9a\u4e49\u7684Object\u7684\u6240\u5c5e\u96c6),\u8c03\u7528\u4e86UEngine::<span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\"><br \/>\n<\/span>CleanupPackagesToFullyLoad()<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE435.png\" alt=\"\" \/><\/p>\n<p>\u53ef\u4ee5\u770b\u5230\u8fd9\u4e2a\u5b9e\u73b0\u662f\u904d\u5386Context\u7684\u6240\u6709\u7684FFullyLoadedPackagesInfo<\/p>\n<p>\uff08\u5185\u90e8\u6709<span style=\"color: #2b91af;\"><span style=\"font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">TArray<span style=\"color: black;\">&lt;<span style=\"color: blue;\">class<span style=\"color: black;\"><br \/>\n<span style=\"color: #2b91af;\">UObject<span style=\"color: black;\">*&gt; LoadedObjects;<\/span><\/span><\/span><\/span><\/span><\/span>\u5217\u4e3e\u4e86\u5df2\u7ecf\u52a0\u8f7d\u7684<\/span>object\uff09<\/p>\n<p>\u5982\u679c\u7b26\u5408name\u5c06LoadedObjects\u5168\u90e8\u79fb\u51faRoot\uff08\u4e4b\u540e\u8fdb\u5165Pendingkill\u72b6\u6001\u7b49\u5f85\u4e0b\u4e00\u6b21GC\uff09<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE436.png\" alt=\"\" \/><\/p>\n<p>\u7136\u540e\u662f\u5173\u4e8e\u5f02\u6b65\u52a0\u8f7dmap\u7684\u95ee\u9898\uff08\u7701\u7565\uff09<\/p>\n<p>\u5f00\u59cbunload\u5f53\u524dWorld<\/p>\n<p>\u5982\u679cURL\u4e2d\u7684\u6709quiet\u7684\u6307\u4ee4\uff0c\u5219\u4f1a\u914d\u7f6eUEngine\uff1a\uff1aTransitionGameMode\u4f5c\u4e3a\u8fc7\u6e21\u7684GameMode\u4fe1\u606f\uff0c<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE437.png\" alt=\"\" \/><\/p>\n<p>\u4e4b\u540e\u5f00\u59cb\u5177\u4f53\u7684unload\u64cd\u4f5c\uff1a<\/p>\n<p>\u9996\u5148\u5173\u95ed\u7f51\u7edc\uff1a<span style=\"color: black;\"><span style=\"font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">ShutdownWorldNetDriver(<span style=\"color: gray;\">WorldContext<span style=\"color: black;\">.World());<\/span><\/span><\/span><br \/>\n<\/span><\/p>\n<p>\u5e7f\u64adlevel\u4eceWorld\u4e2d\u79fb\u9664\u7684\u6d88\u606f\uff1b<\/p>\n<p>\u65ad\u5f00players\u548cWorld\u4e2dPlayerControllers\u7684\u8fde\u63a5\uff1b<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE438.png\" alt=\"\" \/><\/p>\n<p>\u7ed3\u675fWorld\u4e2dActor\u7684\u72b6\u6001\uff0c\u8c03\u7528\u4e86AActor::<span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\"><br \/>\n<\/span>RouteEndPlay\u3010\u53c2\u6570\u662fReason Type\u5982\u679cActor\u5df2\u7ecf\u521d\u59cb\u5316\u5219\u5148\u8c03\u7528AActor::EndPlay(Reason)=&gt;\u5982\u679cHasBegunPlay\uff0c\u5219\u8c03\u7528ReceiveEndPlay()=&gt;\u7528\u6237\u81ea\u5b9a\u4e49\u7684End\u64cd\u4f5c\uff0c\u5e76\u53d6\u6d88\u81ea\u5df1\u4ee5\u53caComponent\u7684\u5f00\u59cbPlay\u72b6\u6001\u3011\u3010\u6700\u540e\u53d6\u6d88Actor\u4e0a\u7684Component\u7684\u521d\u59cb\u5316\u3011<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE439.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE440.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE441.png\" alt=\"\" \/><\/p>\n<p>\u4e4b\u540ecleanupWorld()<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE442.png\" alt=\"\" \/><\/p>\n<p>GEngine\uff08\u5168\u5c40\u5b9e\u4f8b\uff09\u7684\u8fdb\u884c\u8fd9\u4e2aWorld\u76f8\u5173\u7684\u4fe1\u606f\u7684\u66f4\u6539\uff0c\u5e76\u5c06World\u79fb\u51faRoot<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE443.png\" alt=\"\" \/><\/p>\n<p>\u4e4b\u540e\u8fdb\u884cWorld\u7684\u53ef\u80fd\u88ab\u5305\u542b\u7684\u76f8\u5173\u7684\u7c7b\u8fdb\u5165PendingKill\u72b6\u6001<\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">CastChecked&lt;<span style=\"color: #2b91af;\">UWorld<span style=\"color: black;\">&gt;(Level-&gt;GetOuter())-&gt;MarkObjectsPendingKill();<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">CastChecked&lt;UWorld&gt;(LevelStreaming-&gt;GetLoadedLevel()-&gt;GetOuter())-&gt;MarkObjectsPendingKill();<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">AudioDevice-&gt;Flush(WorldContext.World());<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">AudioDevice-&gt;SetTransientMasterVolume(1.0f);<br \/>\n<\/span><\/p>\n<p>\u6700\u540e<span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\"><br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0WorldContext.SetCurrentWorld(nullptr);<br \/>\n<\/span><\/p>\n<p>\u540e\u8fdb\u5230\u8fd9\u91ccUnload World\u7684\u64cd\u4f5c\u7ed3\u675f\u3002<\/p>\n<p>\u5f00\u59cb\u521b\u5efa\u65b0\u7684World<span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\"><br \/>\n<\/span><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE444.png\" alt=\"\" \/><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\"><br \/>\n<\/span><\/p>\n<p>\u8fd9\u91cc\u5bf9\u4e8ePIE\uff08Play In Editor\uff09\u6709\u989d\u5916\u7684\u64cd\u4f5c\uff0c<\/p>\n<p>\u4e4b\u540e\u8fdb\u884cMap load<\/p>\n<p>\u4e3b\u8981\u7684\u5b9e\u73b0\uff1a<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE445.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE446.png\" alt=\"\" \/><\/p>\n<p>\u7701\u7565\u4e00\u6ce2\u64cd\u4f5c\u4e4b\u540e\u6765\u5230<\/p>\n<p>\u914d\u7f6eNewWorld\u7684\u53c2\u6570\u4ee5\u53ca\u76f8\u5173\u7684\uff0cGWorld\u7acb\u573a\u4e0eGEngine\u6709\u70b9\u76f8\u4f3c<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE447.png\" alt=\"\" \/><\/p>\n<p>\u4e4b\u540e\u5c31\u662fWorld\u7684\u4e00\u4e9b\u57fa\u672c\u7684\u521d\u59cb\u5316<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE448.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE449.png\" alt=\"\" \/><\/p>\n<p>\u2026\u2026<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE450.png\" alt=\"\" \/><\/p>\n<p>\u2026\u2026<\/p>\n<p>\u4e4b\u540e\u662f\u76f8\u5173\u5176\u4ed6\u7684\u64cd\u4f5c<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE451.png\" alt=\"\" \/><\/p>\n<p><strong>UActorComponent<br \/>\n<\/strong><\/p>\n<p>ActorComponent\u662f\u5b9a\u4e49\u53ef\u91cd\u7528\u884c\u4e3a\u7684\u7ec4\u4ef6\u7684\u57fa\u7c7b\uff0c\u53ef\u4ee5\u5c06\u5176\u6dfb\u52a0\u5230\u4e0d\u540c\u7c7b\u578b\u7684Actor\u4e2d\u3002\u5177\u6709\u53d8\u6362\uff08\u5750\u6807\uff09\u7684ActorComponent\u88ab\u79f0\u4e3aSceneComponents\uff0c\u53ef\u4ee5\u88ab\u6e32\u67d3\u7684\u662fPrimitiveComponents\u3002<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE452.png\" alt=\"\" \/><\/p>\n<p>AssetUserData\uff1a\u7ec4\u4ef6\u7528\u5230\u7684\u7528\u6237\u6570\u636e<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE453.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE454.png\" alt=\"\" \/><\/p>\n<p>PrimaryComponentTick\uff0c\u76f8\u5173tick\u884c\u4e3a\uff0cComponent\u4e5f\u662f\u53ef\u4ee5tick\u7684<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE455.png\" alt=\"\" \/><\/p>\n<p>BeginPlay():<\/p>\n<p>\u5728Level\u5c42\u88ab\u8c03\u7528\uff0c\u5e94\u8be5\u53d1\u751f\u5728\u8fd9\u4e2aComponent\u7684\u7236Actor\u6216Component\u7684BeginPlay\uff08\uff09\u4e4b\u540e\uff0c\u5728BeginPlay\u4e4b\u524d\u5fc5\u987b\u5148registered \u548c initialized<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE456.png\" alt=\"\" \/><\/p>\n<p>Activate():<\/p>\n<p>\u6fc0\u6d3bComponent\uff0c\u5f00\u542fTick<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE457.png\" alt=\"\" \/><\/p>\n<p>RegisterComponentTickFunctions():<\/p>\n<p>\u6ce8\u518cTick\u51fd\u6570<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE458.png\" alt=\"\" \/><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE459.png\" alt=\"\" \/><\/p>\n<p>TickComponent():<\/p>\n<p>\u5b9e\u9645\u4e0a\u88abPrimaryComponentTick\u7684ExecuteTick\u8c03\u7528\uff0c\u5176\u5b9e\u73b0\u662f\u901a\u8fc7World\u7ba1\u7406\uff1aWorld\u5148 GetLatentActionManager\uff0c\u5982\u679c\u6709OwningGameInstance\u8fd4\u56deGameInstance\u7684LatentActionManager\uff0c\u5426\u5219\u8fd4\u56de\u81ea\u5df1\u7684\uff0c\u4e4b\u540e\u8c03\u7528\u5b83\u7684ProcessLatenAction\u3002\u3010LatentActionManager\u3011\u5927\u6982\u5c31\u662f\u771f\u6b63\u7ba1\u7406\u6e32\u67d3Tick\u7684\u7c7b\uff0c\u7c7b\u4e2d\u6709TSet&lt;UObject*&gt; ProcessedThisFrame;\u662f\u7528\u6765\u5b58\u6211\u4eec\u5df2\u7ecf\u5904\u7406\u4e86\u8fd9\u4e2a\u6846\u67b6\u7684\u6f5c\u5728\u52a8\u4f5c\u5217\u8868\u7684\u5bf9\u8c61\u5217\u8868\uff0c\u53e6\u5916\u8fd8\u6709BeginFrame ()\uff0c\u5176\u4f5c\u7528\u5c31\u662freset\u8fd9\u4e2aSet<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE460.png\" alt=\"\" \/><\/p>\n<p>RegisterComponent():<\/p>\n<p>\u6ce8\u518cComponent\uff0c\u5b9e\u9645\u8c03\u7528\u4e86RegisterComponentWithWorld\uff0c\u5176\u4e2d\u8fdb\u884c\u4e86\u5f88\u591a\u64cd\u4f5c\uff1a\u6839\u636e\u72b6\u6001\u53ef\u80fd\u5305\u62ec\u6ce8\u518cTickFunc\uff0c\u521d\u59cb\u5316Component\uff0cBeginPlay()\uff0c<\/p>\n<p><span style=\"color: blue; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">void<span style=\"color: black;\"><br \/>\n<span style=\"color: #2b91af;\">UActorComponent<span style=\"color: black;\">::DestroyComponent(<span style=\"color: blue;\">bool<span style=\"color: black;\"><br \/>\n<span style=\"color: gray;\">bPromoteChildren<span style=\"color: green;\">\/*= false*\/<span style=\"color: black;\">)<br \/>\n<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">{<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: green;\">\/\/ Avoid re-entrancy<span style=\"color: black;\"><br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: blue;\">if<span style=\"color: black;\"> (bIsBeingDestroyed)<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0{<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: blue;\">return<span style=\"color: black;\">;<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0}<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0bIsBeingDestroyed = <span style=\"color: blue;\">true<span style=\"color: black;\">;<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: blue;\">if<span style=\"color: black;\"> (bHasBegunPlay)<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0{<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0EndPlay(EEndPlayReason::<span style=\"color: darkslategray;\">Destroyed<span style=\"color: black;\">);<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0}<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: green;\">\/\/ Ensure that we call UninitializeComponent before we destroy this component<span style=\"color: black;\"><br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: blue;\">if<span style=\"color: black;\"> (bHasBeenInitialized)<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0{<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0UninitializeComponent();<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0}<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: green;\">\/\/ Unregister if registered<span style=\"color: black;\"><br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: blue;\">if<span style=\"color: black;\">(IsRegistered())<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0{<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0UnregisterComponent();<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0}<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: green;\">\/\/ Then remove from Components array, if we have an Actor<span style=\"color: black;\"><br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: blue;\">if<span style=\"color: black;\">(<span style=\"color: #2b91af;\">AActor<span style=\"color: black;\">* MyOwner = GetOwner())<br \/>\n<\/span><\/span><\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0{<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: blue;\">if<span style=\"color: black;\"> (IsCreatedByConstructionScript())<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MyOwner-&gt;BlueprintCreatedComponents.Remove(<span style=\"color: blue;\">this<span style=\"color: black;\">);<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: blue;\">else<span style=\"color: black;\"><br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MyOwner-&gt;RemoveInstanceComponent(<span style=\"color: blue;\">this<span style=\"color: black;\">);<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MyOwner-&gt;RemoveOwnedComponent(<span style=\"color: blue;\">this<span style=\"color: black;\">);<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: blue;\">if<span style=\"color: black;\"> (MyOwner-&gt;GetRootComponent() == <span style=\"color: blue;\">this<span style=\"color: black;\">)<br \/>\n<\/span><\/span><\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MyOwner-&gt;SetRootComponent(<span style=\"color: #6f008a;\">NULL<span style=\"color: black;\">);<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0}<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: green;\">\/\/ Tell the component it is being destroyed<span style=\"color: black;\"><br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0OnComponentDestroyed(<span style=\"color: blue;\">false<span style=\"color: black;\">);<br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0<span style=\"color: green;\">\/\/ Finally mark pending kill, to NULL out any other refs<span style=\"color: black;\"><br \/>\n<\/span><\/span><\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">\u00a0\u00a0\u00a0\u00a0MarkPendingKill();<br \/>\n<\/span><\/p>\n<p><span style=\"color: black; font-family: \u65b0\u5b8b\u4f53; font-size: 9pt;\">}<\/span><\/p>\n<p>\u901a\u8fc7\u8fd9\u4e2a\u51fd\u6570\u6bd4\u8f83\u80fd\u6e05\u6670\u4e00\u4e2a\u7ec4\u4ef6\u7684\u6d41\u7a0b<\/p>\n<p>\u7ec4\u4ef6\u5148Register\u4e4b\u540e\uff0c\u8fdb\u884c\u521d\u59cb\u5316\uff0c\u5f00\u59cbPlay\u3002<\/p>\n<p>\u7ec4\u4ef6\u53ef\u80fd\u5c5e\u4e8eActor\uff0cActor\u4e5f\u53ef\u80fd\u5c5e\u4e8e\u7ec4\u4ef6\uff0c\u540c\u65f6\u89e3\u9664\u4ed6\u4eec\u4e4b\u95f4\u7684\u7d22\u5f15<\/p>\n<p>\u5f53\u8fd9\u4e2a\u7ec4\u4ef6\u88ab\u9500\u6bc1\u540e\uff0c\u6b63\u5de7\u5b83\u662f\u4e00\u4e2aActor\u7684RootComponent(\u7c7b\u578b\u662fSceneComponent\u62e5\u6709\u5750\u6807\u8f6c\u6362)\uff0c\u90a3\u4e48SetRootComponent=NULL<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE461.png\" alt=\"\" \/><\/p>\n<p><strong>USceneComponent<br \/>\n<\/strong><\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE462.png\" alt=\"\" \/><\/p>\n<p>\u5305\u56f4\u4f53<\/p>\n<p><img src=\"http:\/\/sirokuma.cc\/wp-content\/uploads\/2018\/05\/050618_0607_UE463.png\" alt=\"\" \/><\/p>\n<p>AttachToComponent():<\/p>\n<p>\u5c06\u6b64SceneComponent Attach\u5230\u522b\u7684SceneComponent\u4e0a\uff0c\u6ce8\u610f\uff1a\u53ea\u6709SceneComponent\u4ee5\u53ca\u5b50\u7c7b\u53ef\u4ee5\u76f8\u4e92\u5d4c\u5957\uff0cActorComponent\u4e0d\u53ef\uff0c\u5b83\u53ea\u80fdattach\u5230Actor\u4e0a\uff0c\u6216\u8005\u88abActor attach\u3002<\/p>\n<p>\u5b9e\u73b0\u590d\u6742\uff1a\u6d89\u53ca\u5230Transform\u548cOwnerActor\u7684\u95ee\u9898<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e3a\u4e86\u65b9\u4fbf\u67e5\u770b\u7c7b\u5173\u7cfb\uff0c\u60a8\u53ef\u4ee5\u70b9\u51fb\u8fd9\u91cc\u5728\u65b0\u6807\u7b7e\u4e2d\u67e5\u770b\u5927\u56fe\uff1a \u70b9\u6211\u67e5\u770b\u5927\u56fe AGameModeBase\uff1a GameModeBase\u5b9a\u4e49\u6b63\u5728\u73a9\u7684\u6e38\u620f\u3002\u5b83\u7ba1\u7406\u7740\u6e38\u620f\u89c4\u5219\uff0c\u5f97\u5206\uff0c\u5728\u8fd9\u79cd\u6e38\u620f\u7c7b\u578b\u4e2d\u5141\u8bb8\u54ea\u4e9b\u6f14\u5458\u5b58\u5728\uff0c\u4ee5\u53ca\u8c01\u53ef\u4ee5\u8fdb\u5165\u6e38\u620f\u3002 \u5b83\u53ea\u5728\u670d\u52a1\u5668\u4e0a\u5b9e\u4f8b\u5316\uff0c\u5e76\u4e0d\u4f1a\u5728\u5ba2\u6237\u7aef\u4e0a\u5b58\u5728\u3002 \u5728C ++\u00a0UGameEngine :: LoadMap\uff08\uff09\u4e2d\u4e3a\u6e38\u620f\u73a9\u6cd5\u521d\u59cb\u5316\u5173\u5361\u65f6\uff0cGameModeBase actor\u88ab\u5b9e\u4f8b\u5316\u00a0\u3002 \u6b64GameMode actor\u7684\u7c7b\u7531\uff08\u6309\u987a\u5e8f\uff09URL\uff1fgame = xxx\uff0c\u5e76\u5728World Settings\u4e2d\u8bbe\u7f6e\u7684GameMode Override\u503c\u6216\u6e38\u620f\u7684Project Settings\u4e2d\u8bbe\u7f6e\u7684DefaultGameMode\u6761\u76ee\u786e\u5b9a\u3002 \u8fd9\u4e2a\u7c7b\u7684\u4e3b\u8981\u5185\u5bb9\u5373\u662f\u7ba1\u7406\u6e38\u620f\u89c4\u5219\uff0cdefalut\u73a9\u5bb6Pawn\u7684\u7ba1\u7406\uff0c\u73a9\u5bb6\u52a0\u5165\u6e38\u620f\u7684\u884c\u4e3a\u548c\u521d\u59cb\u5316\uff08HUD\uff09\u3002\u4e0eGameSession\u4e0d\u540c\uff0cGameModeBase\u662f\u4e0a\u5c42\u7684\u89c4\u5219\uff0c\u5b83\u6ca1\u6709\u5177\u4f53\u5230Player\u7684\u64cd\u4f5c\uff0cGameSession\u5219\u662f\u4e00\u4e2a\u5177\u4f53\u7684\u4e00\u6b21\u4f1a\u8bdd\u5b9e\u4f8b \u65b9\u6cd5\uff1a InitNewPlayer(): \u5728session\u4e0a\u6ce8\u518cplayer \u00a0\u00a0\u00a0\u00a0GameSession-&gt;RegisterPlayer(NewPlayerController, UniqueId.GetUniqueNetId(), UGameplayStatics::HasOption(Options, TEXT(&#8220;bIsFromInvite&#8221;))); Find a starting spot\uff0c\u627e\u5230\u8d77\u59cb\u70b9 Set up spectating\uff0c\u8bbe\u7f6e\u89c2\u6218\uff08\u5982\u679c\u662f\u89c2\u4f17\uff09 NewPlayerController-&gt;StartSpectatingOnly(); Init player&#8217;s name NewPlayerController-&gt;PlayerState-&gt;SetPlayerName(); InitGame(): \u901a\u8fc7World\u521b\u5efa\u4e86GameSession\uff0c\u8fd9\u91cc\u8bf4\u660e\u4e00\u70b9\uff1aUWorld\uff1a\uff1aSpawnActor\u5728Create\u65b0Actor\u540e\u4f1a\u5c06\u5176\u7eb3\u5165\u6307\u5b9a\u7684Ulevel\u4e4b\u4e0b(\u6839\u636eSpawnParameters\u53c2\u6570\uff0c\u9ed8\u8ba4\u5728CurrentLevel) AActor* const Actor = NewObject&lt;AActor&gt;(LevelToSpawnIn, Class, NewActorName, SpawnParameters.ObjectFlags, Template); \u00a0\u00a0\u00a0\u00a0LevelToSpawnIn-&gt;Actors.Add( Actor ); \u00a0\u00a0\u00a0\u00a0LevelToSpawnIn-&gt;ActorsForGC.Add(Actor); \u800c\u4e14SpawnActor\u53ea\u5728World\u4e2d\uff0c\u800c\u4e0d\u5728level\u4e2d\uff0c\u66f4\u4e0d\u5728Actor\u4e2d\uff0c\u539f\u56e0\u662fActor\u662f\u5b58\u5728\u4e00\u4e2aOuter\u7684\u8fd9\u91cc\u4e00\u822c\u662fLevel\uff08\u5927\u6982\u4e5f\u80fd\u662f\u4e00\u4e2aComponent\uff09\uff0cLevel\u4e2d\u6709Actor\u7684\u76f4\u63a5\u7d22\u5f15\uff0cWorld\u5219\u662f\u901a\u8fc7Levels\u7684\u904d\u5386\u8bbf\u95eeActor\u7684\uff0c\u56e0\u6b64New Actor\u4e0d\u5fc5\u5728World\u4e2d\u6ce8\u518c InitGameState():&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/sirokuma.cc\/index.php?rest_route=\/wp\/v2\/posts\/855"}],"collection":[{"href":"https:\/\/sirokuma.cc\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sirokuma.cc\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sirokuma.cc\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sirokuma.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=855"}],"version-history":[{"count":5,"href":"https:\/\/sirokuma.cc\/index.php?rest_route=\/wp\/v2\/posts\/855\/revisions"}],"predecessor-version":[{"id":861,"href":"https:\/\/sirokuma.cc\/index.php?rest_route=\/wp\/v2\/posts\/855\/revisions\/861"}],"wp:attachment":[{"href":"https:\/\/sirokuma.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sirokuma.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sirokuma.cc\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}