CN112579062B - Data interaction method between Lua language and Unity - Google Patents

Data interaction method between Lua language and Unity Download PDF

Info

Publication number
CN112579062B
CN112579062B CN202011544878.3A CN202011544878A CN112579062B CN 112579062 B CN112579062 B CN 112579062B CN 202011544878 A CN202011544878 A CN 202011544878A CN 112579062 B CN112579062 B CN 112579062B
Authority
CN
China
Prior art keywords
lua
unity
variable
language
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011544878.3A
Other languages
Chinese (zh)
Other versions
CN112579062A (en
Inventor
梁超
汪兴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ultimate Attainment Interactive Network Technical Concern Co ltd In Xiamen
Original Assignee
Ultimate Attainment Interactive Network Technical Concern Co ltd In Xiamen
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ultimate Attainment Interactive Network Technical Concern Co ltd In Xiamen filed Critical Ultimate Attainment Interactive Network Technical Concern Co ltd In Xiamen
Priority to CN202011544878.3A priority Critical patent/CN112579062B/en
Publication of CN112579062A publication Critical patent/CN112579062A/en
Application granted granted Critical
Publication of CN112579062B publication Critical patent/CN112579062B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5526Game data structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Stored Programmes (AREA)

Abstract

The invention discloses a data interaction method between Lua language and Unity, which comprises the following steps: s1, defining the type of the Lua variable, converting the type of the Lua variable into a Lua code with a fixed format and writing the Lua code into a Lua script file mounted on the C # intermediary component; s2, automatically assigning the Lua variables and storing the Lua variables into a data container in the C # intermediary component; s3, automatically serializing the data in the data container; s4, the C # intermediary component deserializes all the serialized data collected from the data container and assembles the serialized data into a LuaTable type variable which can be identified by the Lua language; s5, the C # broker component initializes the Lua script file and passes the LuaTable type variables to the Lua script file for use to pass the variables. The invention realizes the data interaction between the Lua and the Unity through the C # intermediary component, greatly simplifies the variable declaration and the using process of the Lua language, and simultaneously improves the game performance of the Lua language when the Unity object is used.

Description

Data interaction method between Lua language and Unity
Technical Field
The invention relates to the technical field of computers, in particular to a data interaction method between Lua language and Unity.
Background
The hot update of the Unity engine game is an important technology of the current mobile platform network game, and the interaction flow of the C # language and the Unity object provided by the existing Unity game engine is as follows: c # declares the variable, drags the bound or edited object under the Unity editor. Different from the C # language supported by the Unity engine, the Unity does not provide the support of variable binding for the Lua language, including Lua variable identification, editing, storage and use processes, and in game development, the Lua language, the Unity object and the component can only call the C # interface "Find" (query) and "GetComponent" (obtain object) provided by the Unity to obtain the object or the component when interacting, which leads to a tedious development process, and meanwhile, the game performance is also affected in a frequent object calling process.
Disclosure of Invention
In order to solve the problems, the invention provides a data interaction method between the Lua language and the Unity, which greatly simplifies the variable declaration and the use flow of the Lua language and simultaneously improves the game performance of the Lua language when the Unity object is used.
The invention adopts the following technical scheme:
a data interaction method between Lua language and Unity comprises the following steps:
s1, defining the type of Lua variable: defining the type of the Lua local variable in a naming mode, converting the type of the Lua local variable into a Lua code with a fixed format, and writing the Lua code into a Lua script file mounted on a C # intermediate component on a corresponding Unity scene or a prefabricated body;
s2, assignment and storage of Lua variables: analyzing the Lua codes, identifying all variables and the types corresponding to the variables, traversing the stored Unity scene or prefabricated body, finding objects corresponding to the Lua variables through names, automatically assigning values to the Lua variables, and putting all the collected objects into a data container in the C # intermediary component;
s3, automatic serialization: serializing and persistently storing the data in the data container into a scene file or a prefabricated body file of Unity;
s4, deserialization: after the game runs and is activated, the C # intermediary component deserializes all the serialized data collected in the data container and assembles the serialized data into a LuaTable type variable which can be identified by Lua language;
s5, transfer variable: and the C # intermediary component initializes the self-mounted Lua script file and transmits the LuaTable type variable to the Lua script file for use.
Further, the definition of the type in the step S1 is written manually or automatically.
Further, the types include a reference type including a game object, a material, a morph, a camera, or a button, and a value type including an integer variable, a single precision floating point number, or an array.
Further, the Lua code parsing in step S2 adopts a regular expression.
Further, the assignment in step S2 may also adopt manual assignment, specifically: and the Unity calls an EditorGUILAyout-ObjectField interface to draw, and assigns the Lua variable directly on a monitor panel of the Unity.
Further, the automatic serialization in the step S3 is automatically completed by Unity.
Further, the step S3 needs to mark the scene file or the pre-form file of Unity as dirty before storing.
Further, the deserialization process in step S4 is automatically performed for Unity.
After adopting the technical scheme, compared with the background technology, the invention has the following advantages:
1. data interaction between Lua and Unity is realized through the C # intermediary component, variable declaration and using flow of Lua language are greatly simplified, and game performance of Lua language when a Unity object is used is improved;
2. the functions of type definition, identification, editing, storage and use of the Lua variable of the weak type language by the Unity are realized, and the Lua definition variable is added to automatically generate codes;
3. before the Unity scene or the prefabricated body is stored, the value of the Lua variable is automatically assigned, so that the support of C # language by the Unity is more convenient than that of C # language;
4. when the game runs, the data is deserialized and transmitted to the Lua script file, so that the development personnel can use the data conveniently.
Drawings
FIG. 1 is a schematic flow chart of the method of the present invention.
Detailed Description
In order to make the objects, technical solutions and advantages of the present invention more apparent, the present invention is described in further detail below with reference to the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are merely illustrative of the invention and are not intended to limit the invention.
Examples
As shown in fig. 1, a method for data interaction between Lua language and Unity includes the following steps:
s1, defining the type of Lua variable: defining the type of the Lua local variable in a naming mode, converting the type of the Lua local variable into a Lua code with a fixed format, and writing the Lua code into a Lua script file mounted on a C # intermediate component on a corresponding Unity scene or a prefabricated body;
for example: for the Lua variable "_ gosest" (execution test), which is defined as the Game object type of Unity, the Lua code definition declares as:
annotating the code: - @ typeGameObject @ _ goTest;
variable declaration: local _ goTest ═ bind. _ goTest;
this artificially defines the Lua variable "_ goTest" without any type as a GameObject type, whose object naming requires the beginning of "_ go" for subsequent recognition. The same holds true for common types in Unity such as: objects and components such as Materail (materials), Transform (variants), Camera (Camera), Button (buttons), etc., are also type-defined using the above method;
thus, step S1 realizes automatic writing of the corresponding Lua code by means of identifying a name.
The definition of the type described in the step S1 is written manually or automatically.
The types include a reference type including game objects, materials, morphs, cameras, buttons, etc., and a value type including integer variables, single precision floating point numbers, arrays, etc.
S2, assignment and storage of Lua variables: analyzing the Lua codes, identifying all variables and the types corresponding to the variables, traversing the stored Unity scene or prefabricated body, finding objects corresponding to the Lua variables through names, automatically assigning values to the Lua variables, and putting all the collected objects into a data container in the C # intermediary component;
and adopting a regular expression when the Lua code is analyzed in the step S2.
The assignment in step S2 may also adopt manual assignment, specifically: the Unity calls the editor guiliayout. objectfield interface to draw, and assigns the Lua variable directly on the supervisor panel (observer) of Unity. Variables of the reference type can be assigned manually or automatically, while variables of the value type are assigned manually mainly on a supervisor (observer) panel.
For example: after parsing, for the Lua variable "_ goTest", the corresponding type "GameObject" is found.
S3, automatic serialization: serializing and persistently storing the data in the data container into a scene file or a prefabricated body file of Unity; the automatic serialization in said step S3 is automatically completed by Unity. Said step S3 requires marking the scene (.unity) file or the prefabricated body (.prefab) file of said Unity as dirty "", before storing.
S4, deserialization: after the game runs and is activated, the C # intermediary component deserializes all the serialized data collected in the data container and assembles the serialized data into a LuaTable type variable which can be identified by Lua language; the deserialization process in step S4 is performed automatically for Unity.
For the LuaTable type variable "bind", we only need to correspond the LuaTable type variable "bind" to the name of the Lua variable, such as: and assigning the 'goTest' object of Unity to the 'bind. _ goTest', namely finishing the assembly.
S5, transfer variable: and the C # intermediary component initializes the self-mounted Lua script file and transmits the LuaTable type variable to the Lua script file for use.
From the above steps, the local variable "local _ goTest" of Lua can be assigned by "bind. _ goTest", and the developer can conveniently use the already assigned local variable "goTest".
The above description is only for the preferred embodiment of the present invention, but the scope of the present invention is not limited thereto, and any changes or substitutions that can be easily conceived by those skilled in the art within the technical scope of the present invention are included in the scope of the present invention. Therefore, the protection scope of the present invention shall be subject to the protection scope of the claims.

Claims (8)

1. A data interaction method between Lua language and Unity is characterized in that: the method comprises the following steps:
s1, defining the type of Lua variable: defining the type of the Lua local variable in a naming mode, converting the type of the Lua local variable into a Lua code with a fixed format, and writing the Lua code into a Lua script file mounted on a C # intermediate component on a corresponding Unity scene or a prefabricated body;
s2, assignment and storage of Lua variables: analyzing the Lua codes, identifying all variables and the types corresponding to the variables, traversing the stored Unity scene or prefabricated body, finding objects corresponding to the Lua variables through names, automatically assigning values to the Lua variables, and putting all the collected objects into a data container in the C # intermediary component;
s3, automatic serialization: serializing and persistently storing the data in the data container into a scene file or a prefabricated body file of Unity;
s4, deserialization: after the game runs and is activated, the C # intermediary component deserializes all the serialized data collected in the data container and assembles the serialized data into a LuaTable type variable which can be identified by Lua language;
s5, transfer variable: and the C # intermediary component initializes the self-mounted Lua script file and transmits the LuaTable type variable to the Lua script file for use.
2. The method of claim 1, wherein the data interaction between the Lua language and Unity is as follows: the definition of the type described in the step S1 is written manually or automatically.
3. The method of claim 2, wherein the data interaction between the Lua language and Unity is as follows: the types include a reference type including a game object, material, morph, camera, or button, and a value type including an integer variable, a single precision floating point number, or an array.
4. The method of claim 1, wherein the data interaction between the Lua language and Unity is as follows: and adopting a regular expression when the Lua code is analyzed in the step S2.
5. The method of claim 1, wherein the data interaction between the Lua language and Unity is as follows: the assignment in step S2 may also adopt manual assignment, specifically: and the Unity calls an EditorGUILAyout-ObjectField interface to draw, and assigns the Lua variable directly on a monitor panel of the Unity.
6. The method of claim 5, wherein the data interaction between the Lua language and the Unity is as follows: the automatic serialization in said step S3 is automatically completed by Unity.
7. The method of claim 6, wherein the data interaction between the Lua language and the Unity is as follows: the step S3 needs to mark the scene file or the prefabricated file of Unity as dirty before storing.
8. The method of claim 7, wherein the data interaction between the Lua language and Unity is as follows: the deserialization process in step S4 is performed automatically for Unity.
CN202011544878.3A 2020-12-23 2020-12-23 Data interaction method between Lua language and Unity Active CN112579062B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011544878.3A CN112579062B (en) 2020-12-23 2020-12-23 Data interaction method between Lua language and Unity

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011544878.3A CN112579062B (en) 2020-12-23 2020-12-23 Data interaction method between Lua language and Unity

Publications (2)

Publication Number Publication Date
CN112579062A CN112579062A (en) 2021-03-30
CN112579062B true CN112579062B (en) 2022-04-29

Family

ID=75139340

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011544878.3A Active CN112579062B (en) 2020-12-23 2020-12-23 Data interaction method between Lua language and Unity

Country Status (1)

Country Link
CN (1) CN112579062B (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656417B (en) * 2021-07-23 2022-07-22 厦门雅基软件有限公司 Data processing method, device, equipment and computer readable storage medium
CN114679493B (en) * 2022-03-23 2023-07-28 北京睿芯高通量科技有限公司 Safe method for transmitting data in serialization and deserialization mode

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325866A (en) * 2016-08-22 2017-01-11 网易(杭州)网络有限公司 Cross-engine calling method and cross-engine calling device
CN111858092A (en) * 2020-07-06 2020-10-30 北京乐学帮网络技术有限公司 Method, device and system for communication between scripts

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8478581B2 (en) * 2010-01-25 2013-07-02 Chung-ching Chen Interlingua, interlingua engine, and interlingua machine translation system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325866A (en) * 2016-08-22 2017-01-11 网易(杭州)网络有限公司 Cross-engine calling method and cross-engine calling device
CN111858092A (en) * 2020-07-06 2020-10-30 北京乐学帮网络技术有限公司 Method, device and system for communication between scripts

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"COCOS2D-X强交互网络游戏架构设计与实践";张筱毅;《中国优秀硕士学位论文全文数据库信息科技辑》;20141115(第11期);第I138-275页 *

Also Published As

Publication number Publication date
CN112579062A (en) 2021-03-30

Similar Documents

Publication Publication Date Title
CN109885488B (en) Automatic test method and system for satellite orbit calculation software driven by case table
CN112579062B (en) Data interaction method between Lua language and Unity
CN107918666B (en) Data synchronization method and system on block chain
CN111241454B (en) Method, system and device for generating webpage codes
CN109697979B (en) Voice assistant skill adding method, device, storage medium and server
CN1783004A (en) Persistent memory manipulation using EFI
CN110244941B (en) Task development method and device, electronic equipment and computer readable storage medium
CN109614329B (en) Software test case aided design method based on interface control file
CN111506314B (en) Project development method, device, server and medium
CN102236544A (en) Method and device for designing skins
CN111857801B (en) Construction method of mobile application
CN100507871C (en) Method and system for testing embedded file system
CN107526679A (en) Automated test frame, the automated testing method based on thereon, storage medium and computer equipment
CN107748715B (en) Unity-based texture map configuration information detection method and system
Reimann et al. Role-based generic model refactoring
CN116028022A (en) Java technology-based zero code Excel data importing method, device and medium
CN111338618B (en) Application scene driven Android application micro-service automatic generation method
CN109857462A (en) The backstage Docker duty mapping method of remote sensing images visual editor
CN109144867B (en) Test method and test system
CN110941471A (en) Method and device for internationalizing basic data of software system
Fatolahi et al. Towards a Semi-Automated Model-Driven Method for the Generation of Web-based Applications from Use Cases.
CN1521994A (en) Method for implementing automatic test of intelligent service
CN116661748A (en) Engine resource conversion method, device, equipment and storage medium
CN114626347B (en) Information prompting method in script writing process and electronic equipment
CN116400927A (en) Code block translation method and device, electronic equipment and storage medium

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant