<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kiran Jodhani</title>
    <description>The latest articles on DEV Community by Kiran Jodhani (@kiranjodhani).</description>
    <link>https://dev.to/kiranjodhani</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F981927%2F11986eb0-4389-4698-b618-4484163f73cd.jpg</url>
      <title>DEV Community: Kiran Jodhani</title>
      <link>https://dev.to/kiranjodhani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kiranjodhani"/>
    <language>en</language>
    <item>
      <title>Unity3D Scriptable Object guide</title>
      <dc:creator>Kiran Jodhani</dc:creator>
      <pubDate>Wed, 15 Feb 2023 14:22:31 +0000</pubDate>
      <link>https://dev.to/kiranjodhani/unity3d-scriptable-object-guide-cbj</link>
      <guid>https://dev.to/kiranjodhani/unity3d-scriptable-object-guide-cbj</guid>
      <description>&lt;p&gt;The main objective of this articles is to give you an idea about ScriptableObject in Unity3D.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are Scriptable Objects?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ScriptableObject is a serializable Unity class that allows you to store large quantities of shared data independent from script instances. Using ScriptableObjects makes it easier to manage changes and debugging. You can build in a level of flexible communication between the different systems in your game, so that it’s more manageable to change and adapt them throughout production, as well as reuse components.&lt;/p&gt;

&lt;p&gt;Every time you instantiate that Prefab, it will get its own copy of that data. Instead of using the method, and storing duplicated data, you can use a ScriptableObject to store the data and then access it by reference from all of the Prefabs. This means that there is one copy of the data in memory.&lt;/p&gt;

&lt;p&gt;Just like MonoBehaviours, ScriptableObjects derive from the base Unity object but, unlike MonoBehaviours, you can not attach a ScriptableObject to a GameObject. Instead, you need to save them as Assets in your Project.&lt;/p&gt;

&lt;p&gt;When you use the Editor, you can save data to ScriptableObjects while editing and at run time because ScriptableObjects use the Editor namespace and Editor scripting. In a deployed build, however, you can’t use ScriptableObjects to save data, but you can use the saved data from the ScriptableObject Assets that you set up during development.&lt;/p&gt;

&lt;p&gt;Data that you save from Editor Tools to ScriptableObjects as an asset is written to disk and is therefore persistent between sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using a ScriptableObject&lt;/strong&gt;&lt;br&gt;
The main use cases for ScriptableObjects are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Saving and storing data during an Editor session&lt;/li&gt;
&lt;li&gt;Saving data as an Asset in your Project to use at run time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To use a ScriptableObject, create a script in your application’s Assets folder and make it inherit from the ScriptableObject class. You can use the CreateAssetMenu attribute to make it easy to create custom assets using your class. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using UnityEngine;

[CreateAssetMenu(fileName = "Data", menuName = "ScriptableObjects/SpawnManagerScriptableObject", order = 1)]
public class SpawnManagerScriptableObject : ScriptableObject
{
    public string prefabName;

    public int numberOfPrefabsToCreate;
    public Vector3[] spawnPoints;
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With the above script in your Assets folder, you can create an instance of your ScriptableObject by navigating to Assets &amp;gt; Create &amp;gt; ScriptableObjects &amp;gt; SpawnManagerScriptableObject. Give your new ScriptableObject instance a meaningful name and alter the values. To use these values, you need to create a new script that references your ScriptableObject, in this case, a SpawnManagerScriptableObject. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using UnityEngine;

public class Spawner : MonoBehaviour
{
    // The GameObject to instantiate.
    public GameObject entityToSpawn;

    // An instance of the ScriptableObject defined above.
    public SpawnManagerScriptableObject spawnManagerValues;

    // This will be appended to the name of the created entities and increment when each is created.
    int instanceNumber = 1;

    void Start()
    {
        SpawnEntities();
    }

    void SpawnEntities()
    {
        int currentSpawnPointIndex = 0;

        for (int i = 0; i &amp;lt; spawnManagerValues.numberOfPrefabsToCreate; i++)
        {
            // Creates an instance of the prefab at the current spawn point.
            GameObject currentEntity = Instantiate(entityToSpawn, spawnManagerValues.spawnPoints[currentSpawnPointIndex], Quaternion.identity);

            // Sets the name of the instantiated entity to be the string defined in the ScriptableObject and then appends it with a unique number. 
            currentEntity.name = spawnManagerValues.prefabName + instanceNumber;

            // Moves to the next spawn point index. If it goes out of range, it wraps back to the start.
            currentSpawnPointIndex = (currentSpawnPointIndex + 1) % spawnManagerValues.spawnPoints.Length;

            instanceNumber++;
        }
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Attach the above script to a GameObject in your Scene&lt;br&gt;
. Then, in the Inspector&lt;br&gt;
, set the Spawn Manager Values field to the new SpawnManagerScriptableObject that you set up.&lt;/p&gt;

&lt;p&gt;Set the Entity To Spawn field to any Prefab in your Assets folder, then click Play in the Editor. The Prefab you referenced in the Spawner instantiates using the values you set in the SpawnManagerScriptableObject instance.&lt;/p&gt;

&lt;p&gt;If you’re working with ScriptableObject references in the Inspector, you can double click the reference field to open the Inspector for your ScriptableObject. You can also create a custom Editor to define the look of the Inspector for your type to help manage the data that it represents.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>unity3d</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to convert a single-player game to Multiplayer in Unity?</title>
      <dc:creator>Kiran Jodhani</dc:creator>
      <pubDate>Thu, 02 Feb 2023 13:24:42 +0000</pubDate>
      <link>https://dev.to/kiranjodhani/how-to-convert-a-single-player-game-to-multiplayer-in-unity-2opk</link>
      <guid>https://dev.to/kiranjodhani/how-to-convert-a-single-player-game-to-multiplayer-in-unity-2opk</guid>
      <description>&lt;p&gt;This post describes steps to converting a single player game to a multiplayer game, using the new Unity Multiplayer networking system. The process described here is a simplified, higher level version of the actual process for a real game; it doesn’t always work exactly like this, but it provides a basic recipe for the process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NetworkManager set-up&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a new GameObject to the Scene and rename it “NetworkManager”.&lt;/li&gt;
&lt;li&gt;Add the NetworkManager component to the “NetworkManager” GameObject.&lt;/li&gt;
&lt;li&gt;Add the NetworkManagerHUD component to the GameObject. This provides the default UI for managing the network game state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Player Prefab set-up&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find the Prefab for the player GameObject in the game, or create a Prefab from the player GameObject&lt;/li&gt;
&lt;li&gt;Add the NetworkIdentity component to the player Prefab&lt;/li&gt;
&lt;li&gt;Check the LocalPlayerAuthority box on the NetworkIdentity&lt;/li&gt;
&lt;li&gt;Set the playerPrefab in the NetworkManager’s Spawn Info section to the player Prefab&lt;/li&gt;
&lt;li&gt;Remove the player GameObject instance from the Scene if it exists in the Scene&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Player movement&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a NetworkTransform component to the player Prefab&lt;/li&gt;
&lt;li&gt;Update input and control scripts to respect isLocalPlayer&lt;/li&gt;
&lt;li&gt;Fix Camera to use spawned player and isLocalPlayer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, this script only processes input for the local player:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using UnityEngine;
using UnityEngine.Networking;

public class Controls : NetworkBehaviour
{
    void Update()
    {
        if (!isLocalPlayer)
        {
            // exit from update if this is not the local player
            return;
        }

        // handle player input for movement
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Basic player game state&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make scripts that contain important data into NetworkBehaviours instead of MonoBehaviours&lt;/li&gt;
&lt;li&gt;Make important member variables into SyncVars&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Networked actions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make scripts that perform important actions into NetworkBehaviours instead of MonoBehaviours&lt;/li&gt;
&lt;li&gt;Update functions that perform important player actions to be commands &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Non-player GameObjects *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Fix non-player prefabs such as enemies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the NetworkIdentify component&lt;/li&gt;
&lt;li&gt;Add the NetworkTransform component&lt;/li&gt;
&lt;li&gt;Register spawnable Prefabs with the NetworkManager&lt;/li&gt;
&lt;li&gt;Update scripts with game state and actions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Spawners&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Potentially change spawner scripts to be NetworkBehaviours&lt;/li&gt;
&lt;li&gt;Modify spawners to only run on the server (use isServer property or the OnStartServer() function)&lt;/li&gt;
&lt;li&gt;Call NetworkServer.Spawn() for created GameObjects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Spawn positions for players&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a new GameObject and place it at player’s start location&lt;/li&gt;
&lt;li&gt;Add the NetworkStartPosition component to the new GameObject&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Lobby&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create Lobby Scene&lt;/li&gt;
&lt;li&gt;Add a new GameObject to the Scene and rename it to “NetworkLobbyManager”.&lt;/li&gt;
&lt;li&gt;Add the NetworkLobbyManager component to the new GameObject.&lt;/li&gt;
&lt;li&gt;Configure the Manager:
Scenes
Prefabs
Spawners&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cryptocurrency</category>
      <category>crypto</category>
      <category>offers</category>
      <category>web3</category>
    </item>
    <item>
      <title>How to implement Game Analytics using Unity Analytics</title>
      <dc:creator>Kiran Jodhani</dc:creator>
      <pubDate>Mon, 23 Jan 2023 11:59:36 +0000</pubDate>
      <link>https://dev.to/kiranjodhani/how-to-implement-game-analytics-using-unity-analytics-2fh</link>
      <guid>https://dev.to/kiranjodhani/how-to-implement-game-analytics-using-unity-analytics-2fh</guid>
      <description>&lt;p&gt;**1. -  Setting up your project for Unity Services&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;-  Setting Up Analytics**&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To get started with Unity’s family of services, you must first link your project to a Unity Services Project ID. A Unity Services Project ID is an online identifier which is used across all Unity Services. These can be created within the Services window itself, or online on the Unity Services website. The simplest way is to use the Services window within Unity, as follows:&lt;/p&gt;

&lt;p&gt;To open the Services Window, go to Window &amp;gt; Unity Services, or click the cloud button in the toolbar. . If you have not yet linked your project with a Services ID, the following appears:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxcus4zsmahpapy867ieb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxcus4zsmahpapy867ieb.png" width="800" height="642"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This allows you to create a new Project ID or select an existing one.&lt;/p&gt;

&lt;p&gt;To create a Project ID, you must specify an Organization and a Project Name.&lt;/p&gt;

&lt;p&gt;If this is the first time you are using any of the Unity Services, you will need to select both an Organization and a Project name. The Select organization field is typically your company name.&lt;/p&gt;

&lt;p&gt;When you first open a Unity Account (usually when you first download and install Unity), a default “Organization” is created under your account. This default Organization has the same name as your account username. If this is the Organization you want your Project to be associated with, select this organization from the list.&lt;/p&gt;

&lt;p&gt;Sometimes people need to be able to work in more than one organization - for example, if you are working with different teams on different projects. If you need to work with multiple organizations, you can add and manage your organizations on the organization ID web page. If you belong to multiple organizations, they will appear in the list.&lt;/p&gt;

&lt;p&gt;Select your organization and click Create.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5o4vsta6w9cpw0tixugo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5o4vsta6w9cpw0tixugo.png" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Project name for your new Unity Services Project ID is automatically filled in with the name you picked for your Project when you first created it. You can change the Project name later in the Settings section of the Services window.&lt;/p&gt;

&lt;p&gt;Sometimes you might need to re-link your project with the Unity Services Project ID. In this case, select the Project from the list of your existing Projects that are registed with Unity Services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. - Setting Up Analytics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you have set up your project for Unity Services, you can enable the Analytics service.&lt;/p&gt;

&lt;p&gt;To do this, in the Services window, select “Analytics” and then click the “Off” button to toggle it On. If you haven’t already done so, at this stage you will need to complete the mandatory Age Designation field for your project. (Again, you may have already done this for a different Unity Service, such as Ads). This age designation selection will appear in the Services window.&lt;/p&gt;

&lt;p&gt;To open the Services Window, go to Window &amp;gt; Unity Services, or click the cloud button in the toolbar. . If you have not yet linked your project with a Services ID, the following appears:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frlkhv6vr9ve3zb6ritvc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frlkhv6vr9ve3zb6ritvc.png" width="800" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This allows you to create a new Project ID or select an existing one.&lt;/p&gt;

&lt;p&gt;To create a Project ID, you must specify an Organization and a Project Name.&lt;/p&gt;

&lt;p&gt;If this is the first time you are using any of the Unity Services, you will need to select both an Organization and a Project name. The Select organization field is typically your company name.&lt;/p&gt;

&lt;p&gt;When you first open a Unity Account (usually when you first download and install Unity), a default “Organization” is created under your account. This default Organization has the same name as your account username. If this is the Organization you want your Project to be associated with, select this organization from the list.&lt;/p&gt;

&lt;p&gt;Sometimes people need to be able to work in more than one organization - for example, if you are working with different teams on different projects. If you need to work with multiple organizations, you can add and manage your organizations on the organization ID web page. If you belong to multiple organizations, they will appear in the list.&lt;/p&gt;

&lt;p&gt;Select your organization and click Create.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkj1m7zqxttf1yihrv8n5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkj1m7zqxttf1yihrv8n5.png" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Project name for your new Unity Services Project ID is automatically filled in with the name you picked for your Project when you first created it. You can change the Project name later in the Settings section of the Services window.&lt;/p&gt;

&lt;p&gt;Sometimes you might need to re-link your project with the Unity Services Project ID. In this case, select the Project from the list of your existing Projects that are registed with Unity Services.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Alternate way to implement DeepLink in Unity3D without Firebase</title>
      <dc:creator>Kiran Jodhani</dc:creator>
      <pubDate>Wed, 11 Jan 2023 10:21:31 +0000</pubDate>
      <link>https://dev.to/kiranjodhani/alternate-way-to-implement-deeplink-in-unity3d-without-firebase-1fi1</link>
      <guid>https://dev.to/kiranjodhani/alternate-way-to-implement-deeplink-in-unity3d-without-firebase-1fi1</guid>
      <description>&lt;p&gt;&lt;strong&gt;Deep linking&lt;/strong&gt;&lt;br&gt;
Deep links are URL links outside of your application that direct users to a location in your application. When the user clicks a deep link for an application, the operating system opens the Unity application at a specified place (for example, a specific scene). Unity uses the Application.absoluteURL property and Application.deepLinkActivated event to support deep links on the following platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;iOS&lt;/li&gt;
&lt;li&gt;Android&lt;/li&gt;
&lt;li&gt;Universal Windows Platform(UWP)&lt;/li&gt;
&lt;li&gt;macOS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this post I will cover Android platform. I will add separate blog for each platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enabling deep linking for Android applications&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before you can process deep links, you need to configure your application to react to them. This section contains instructions on how set up deep links for Android.&lt;/p&gt;

&lt;p&gt;To enable deep linking for Android applications, use an intent filter. An intent filter overrides the standard Android App Manifest to include a specific intent filter section for Activity. To set up an intent filter:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the Project window, go to Assets &amp;gt; Plugins &amp;gt; Android.&lt;/li&gt;
&lt;li&gt;Create a new file and call it AndroidManifest.xml. Unity automatically processes this file when you build your application.&lt;/li&gt;
&lt;li&gt;Copy the following code sample into the new file and save it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br&gt;
&amp;lt;manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"&amp;gt;&lt;br&gt;
  &amp;lt;application&amp;gt;&lt;br&gt;
    &amp;lt;activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector" &amp;gt;&lt;br&gt;
      &amp;lt;intent-filter&amp;gt;&lt;br&gt;
        &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;br&gt;
        &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;br&gt;
      &amp;lt;/intent-filter&amp;gt;&lt;br&gt;
      &amp;lt;intent-filter&amp;gt;&lt;br&gt;
        &amp;lt;action android:name="android.intent.action.VIEW" /&amp;gt;&lt;br&gt;
        &amp;lt;category android:name="android.intent.category.DEFAULT" /&amp;gt;&lt;br&gt;
        &amp;lt;category android:name="android.intent.category.BROWSABLE" /&amp;gt;&lt;br&gt;
        &amp;lt;data android:scheme="unitydl" android:host="mylink" /&amp;gt;&lt;br&gt;
      &amp;lt;/intent-filter&amp;gt;&lt;br&gt;
    &amp;lt;/activity&amp;gt;&lt;br&gt;
  &amp;lt;/application&amp;gt;&lt;br&gt;
&amp;lt;/manifest&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Your Android application now opens when the device processes any link that starts with unitydl://.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using deep links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To process deep links, you can either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check Application.absoluteURL when the application starts.&lt;/li&gt;
&lt;li&gt;Subscribe to the Application.deepLinkActivated event while the application is running. When the device opens an application from a deep link URL, Unity raises the Application.deepLinkActivated event.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following code sample shows you how to process a deep URL and load a scene depending on the URL.&lt;/p&gt;

&lt;p&gt;using UnityEngine;&lt;br&gt;
using UnityEngine.SceneManagement;&lt;/p&gt;

&lt;p&gt;public class ProcessDeepLinkMngr : MonoBehaviour&lt;br&gt;
{&lt;br&gt;
    public static ProcessDeepLinkMngr Instance { get; private set; }&lt;br&gt;
    public string deeplinkURL;&lt;br&gt;
    private void Awake()&lt;br&gt;
    {&lt;br&gt;
        if (Instance == null)&lt;br&gt;
        {&lt;br&gt;
            Instance = this;&lt;br&gt;&lt;br&gt;
            Application.deepLinkActivated += onDeepLinkActivated;&lt;br&gt;
            if (!string.IsNullOrEmpty(Application.absoluteURL))&lt;br&gt;
            {&lt;br&gt;
                onDeepLinkActivated(Application.absoluteURL);&lt;br&gt;
            }&lt;br&gt;
            else deeplinkURL = "[none]";&lt;br&gt;
            DontDestroyOnLoad(gameObject);&lt;br&gt;
        }&lt;br&gt;
        else&lt;br&gt;
        {&lt;br&gt;
            Destroy(gameObject);&lt;br&gt;
        }&lt;br&gt;
    }&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private void onDeepLinkActivated(string url)
{
    deeplinkURL = url;
    string sceneName = url.Split('?')[1];
    bool validScene;
    switch (sceneName)
    {
        case "scene1":
            validScene = true;
            break;
        case "scene2":
            validScene = true;
            break;
        default:
            validScene = false;
            break;
    }
    if (validScene) SceneManager.LoadScene(sceneName);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;To test a deep link:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an HTML file that includes the deep link to test.&lt;/li&gt;
&lt;li&gt;Host it on a local web server.&lt;/li&gt;
&lt;li&gt;Access it from a web browser on your device and click the link.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example HTML file&lt;/strong&gt;&lt;br&gt;
This is an example HTML file that you can use to test deep links. To redirect the link, change the href attribute in one of the &lt;a&gt; elements.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;html&amp;gt;&lt;br&gt;
    &amp;lt;head&amp;gt;&lt;br&gt;
       &amp;lt;meta http-equiv=Content-Type content="text/html; charset=windows-1252"&amp;gt;&lt;br&gt;
    &amp;lt;/head&amp;gt;&lt;br&gt;
    &amp;lt;body &amp;gt;&lt;br&gt;
       &amp;lt;h1&amp;gt;My Deep Link Test page&amp;lt;/h1&amp;gt;&lt;br&gt;
       &amp;lt;p&amp;gt;&amp;lt;a href="unitydl://mylink"&amp;gt;Launch&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt;
       &amp;lt;p&amp;gt;&amp;lt;a href="unitydl://mylink?parameter"&amp;gt;Launch with Parameter&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt;
    &amp;lt;/body&amp;gt;&lt;br&gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>writing</category>
      <category>community</category>
      <category>career</category>
    </item>
    <item>
      <title>What is Animation System in Unity3D</title>
      <dc:creator>Kiran Jodhani</dc:creator>
      <pubDate>Thu, 05 Jan 2023 12:10:31 +0000</pubDate>
      <link>https://dev.to/kiranjodhani/what-is-animation-system-in-unity3d-5100</link>
      <guid>https://dev.to/kiranjodhani/what-is-animation-system-in-unity3d-5100</guid>
      <description>&lt;p&gt;&lt;strong&gt;Unity has a rich and sophisticated animation system (sometimes referred to as ‘Mecanim’). It provides:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy workflow and setup of animations for all elements of Unity including objects, characters, and properties.&lt;/li&gt;
&lt;li&gt;Support for imported animation clips and animation created within Unity&lt;/li&gt;
&lt;li&gt;Humanoid animation retargeting - the ability to apply animations from one character model onto another.
Simplified workflow for aligning animation clips.&lt;/li&gt;
&lt;li&gt;Convenient preview of animation clips, transitions and interactions between them. This allows animators to work more independently of programmers, prototype and preview their animations before gameplay code is hooked in.&lt;/li&gt;
&lt;li&gt;Management of complex interactions between animations with a visual programming tool.&lt;/li&gt;
&lt;li&gt;Animating different body parts with different logic.&lt;/li&gt;
&lt;li&gt;Layering and masking features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Animation workflow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unity’s animation system is based on the concept of Animation Clips&lt;br&gt;
, which contain information about how certain objects should change their position, rotation, or other properties over time. Each clip can be thought of as a single linear recording. Animation clips from external sources are created by artists or animators with 3rd party tools such as Autodesk® 3ds Max® or Autodesk® Maya®, or come from motion capture studios or other sources.&lt;/p&gt;

&lt;p&gt;Animation Clips are then organised into a structured flowchart-like system called an Animator Controller&lt;br&gt;
. The Animator Controller acts as a “State Machine&lt;br&gt;
” which keeps track of which clip should currently be playing, and when the animations should change or blend together.&lt;/p&gt;

&lt;p&gt;A very simple Animator Controller might only contain one or two clips, for example to control a powerup spinning and bouncing, or to animate a door opening and closing at the correct time. A more advanced Animator Controller might contain dozens of humanoid animations for all the main character’s actions, and might blend between multiple clips at the same time to provide a fluid motion as the player moves around the scene&lt;br&gt;
.&lt;/p&gt;

&lt;p&gt;Unity’s Animation system also has numerous special features for handling humanoid characters which give you the ability to retarget humanoid animation from any source (for example: motion capture; the Asset Store; or some other third-party animation library) to your own character model, as well as adjusting muscle definitions&lt;br&gt;
. These special features are enabled by Unity’s Avatar&lt;br&gt;
 system, where humanoid characters are mapped to a common internal format.&lt;/p&gt;

&lt;p&gt;Each of these pieces - the Animation Clips, the Animator Controller, and the Avatar, are brought together on a GameObject&lt;br&gt;
 via the Animator Component&lt;br&gt;
. This component has a reference to an Animator Controller, and (if required) the Avatar for this model. The Animator Controller, in turn, contains the references to the Animation Clips it uses.&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
    <item>
      <title>What is Coroutine in Unity3D</title>
      <dc:creator>Kiran Jodhani</dc:creator>
      <pubDate>Fri, 30 Dec 2022 10:51:08 +0000</pubDate>
      <link>https://dev.to/kiranjodhani/what-is-coroutine-in-unity3d-ign</link>
      <guid>https://dev.to/kiranjodhani/what-is-coroutine-in-unity3d-ign</guid>
      <description>&lt;p&gt;&lt;strong&gt;Objective :&lt;/strong&gt;&lt;br&gt;
The objective of this blog is to learn about Coroutines and its uses in Unity3D.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction :&lt;/strong&gt;&lt;br&gt;
Before jumping to Coroutines, let’s discuss why it is required ? and what makes it a powerful feature that can do wonder in unity.&lt;/p&gt;

&lt;p&gt;Unity is frame based.Unity does things each frame. Many processes in games take place over the course of multiple frames.Sometimes we got a dense process that takes a long time to finish, so during this time your game will run at low FPS(frames per second). so we have to find a way so that this process will not impact our game fps. One way is run this process on another thread, instead on the main thread.&lt;/p&gt;

&lt;p&gt;But Unity is single threaded.There is one main loop of Unity and all those functions that you write are being called by the same main thread in order. we can verify this by placing a while(true); in any of the game functions. It will freeze the whole thing, even the Unity editor.&lt;/p&gt;

&lt;p&gt;Another way is to break the work up into chunks that can be run one-per-frame, this is where Coroutines come very handy. Coroutines give us full control how we want to finish this task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Coroutine?&lt;/strong&gt;&lt;br&gt;
A Coroutine is a function that allows pausing its own execution and resuming from the exact same point after a condition is met.&lt;/p&gt;

&lt;p&gt;This is the main difference between standard c# functions and Coroutine functions other than the syntax. Typical function can return any type, whereas coroutines must return an IEnumerator, and we must use “yield” before “return”.&lt;/p&gt;

&lt;p&gt;Coroutines can be used for two reasons: asynchronous code and code that needs to compute over several frames.&lt;/p&gt;

&lt;p&gt;So basically coroutines help us to break work into multiple frames, you might be thinking this we can do using Update function. You are right, but we do not have any control over the Update function, whereas Coroutine code can be executed on demand or at a different frequency (eg. every 5 seconds instead of every frame).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax :&lt;/strong&gt;&lt;br&gt;
Typical coroutine function looks like this&lt;/p&gt;

&lt;p&gt;IEnumerator MyCoroutine()&lt;br&gt;
{&lt;br&gt;
  Debug.Log("Hello world");&lt;br&gt;
  yield return null; &lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Whenever yield is reached, the execution is halted and resumed later, depending on “yield” used&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;yield return null&lt;/strong&gt; – Resumes execution after All Update functions have been called, on the next frame&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;yield return new WaitForSeconds(t)&lt;/strong&gt; – Resumes execution after (Approximately) t seconds&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;yield return new WaitForEndOfFrame()&lt;/strong&gt; – Resumes execution after all cameras and GUI were rendered&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;yield return new WaitForFixedUpdate()&lt;/strong&gt; – Resumes execution after all FixedUpdates have been called on all scripts&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;yield return new WWW(url)&lt;/strong&gt; – Resumes execution after the web resource at URL was downloaded or failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Start and Stop Coroutine ?&lt;/strong&gt;&lt;br&gt;
There are two ways to start Coroutine, both using the StartCoroutine() method.&lt;/p&gt;

&lt;p&gt;String Based : StartCoroutine(string nameoffunction) eg. StartCoroutine(“myCoroutine”)&lt;br&gt;
IEnumerator Based : StartCoroutine(IEnumerator e) eg. StartCoroutine(myCoroutine())&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop Coroutine :&lt;/strong&gt;&lt;br&gt;
A Coroutine can be Stop using same ways as we discussed  above, here instead of calling StartCoroutine, we use StopCoroutine.&lt;/p&gt;

&lt;p&gt;It is very simple to stop Coroutine using this method, but you have to be careful while using this method. Suppose if same coroutine has been called more than once using StartCoroutine(string s), then StopCoroutine will result in all of them being stopped.&lt;/p&gt;

&lt;p&gt;To Stop Coroutine we have to use the same method as you used to Start Coroutine. It means if we have started the Coroutine using String method (eg. StartCoroutine(“MyCoroutine”)), then to stop this Coroutine we have to use String based method.(eg. StopCoroutine(“MyCoroutine”)).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coroutine Summary:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coroutine is a function that allows pausing its own execution and resuming from the exact same point after a condition is met.&lt;/li&gt;
&lt;li&gt;It helps us to divide the  complex work to multiple frames (eg. if we want to instantiate 100 of enemy prefab, it is better to do this in Coroutine)&lt;/li&gt;
&lt;li&gt;StartCoroutine() is used to start new Coroutine.&lt;/li&gt;
&lt;li&gt;StopCoroutine() is used to Stop Coroutine.&lt;/li&gt;
&lt;li&gt;Use yield return null instead of yield return 0.&lt;/li&gt;
&lt;li&gt;Always use IEnumerator based method to Start and Stop Coroutine.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>unity3d</category>
      <category>gamedev</category>
      <category>csharp</category>
    </item>
    <item>
      <title>How to create Prefabs in Unity3D?</title>
      <dc:creator>Kiran Jodhani</dc:creator>
      <pubDate>Mon, 19 Dec 2022 12:14:07 +0000</pubDate>
      <link>https://dev.to/kiranjodhani/how-to-create-prefabs-in-unity3d-2egi</link>
      <guid>https://dev.to/kiranjodhani/how-to-create-prefabs-in-unity3d-2egi</guid>
      <description>&lt;p&gt;This short article explains what Unity's Prefabs are and what they are useful for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Motivation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's imagine that we want to make a Tower Defence game in Unity. At first we would create a Tower GameObject, that would look something like this in the Hierarchy:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F960jc5l6870ets612337.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F960jc5l6870ets612337.png" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the player starts the game, usually there are no Towers in the scene yet. What we need is a way to save our Tower GameObjects somewhere and then load them into the Hierarchy again as soon as the player wants to build a tower.&lt;/p&gt;

&lt;p&gt;This is what Prefabs are for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a Prefab&lt;/strong&gt;&lt;br&gt;
Let's create a Prefab. It's very easy, all we have to do is drag our GameObject from the Hierarchy into the Project area like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnh7pztxz5tlfnl9v8ceh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnh7pztxz5tlfnl9v8ceh.png" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Afterwards we can see the Prefab in our Project area:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rt74qqemrny1ditzpet.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rt74qqemrny1ditzpet.png" alt="Image description" width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we can delete the GameObject from our Hierarchy so it's not in the game world anymore. But since it's in the Project area, we don't lose it completely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Loading a Prefab&lt;/strong&gt;&lt;br&gt;
If we want to load a prefab, we have two options. We can either do it manually by dragging it from the Project area into the Hierarchy area, or by using a script that calls Instantiate.&lt;/p&gt;

&lt;p&gt;Here is an example script that loads a Prefab as soon as the game starts:&lt;/p&gt;

&lt;p&gt;using UnityEngine;&lt;br&gt;
using System.Collections;&lt;/p&gt;

&lt;p&gt;public class Test : MonoBehaviour {&lt;br&gt;
    public GameObject prefab = null;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;void Start () {
    // instantiate the prefab
    // -&amp;gt; transform.position means that it will be
    //    instantiated at the position of *this*
    //    gameobject
    // -&amp;gt; quaternion.identity means that it will
    //    have the default rotation, hence its not
    //    rotated in any weird way
    Instantiate(prefab,
                transform.position,
                Quaternion.identity);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Now all we have to do is add the Test script to a GameObject in the scene, take a look at the Inspector and then set the public prefab variable to any Prefab from our Project area like this:&lt;/p&gt;

&lt;p&gt;After pressing start, it immediately loads our Tower Prefab into the scene.&lt;/p&gt;

&lt;p&gt;Simple as that!&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>management</category>
    </item>
    <item>
      <title>How to export android APK in Unity?</title>
      <dc:creator>Kiran Jodhani</dc:creator>
      <pubDate>Tue, 13 Dec 2022 11:39:13 +0000</pubDate>
      <link>https://dev.to/kiranjodhani/how-to-export-android-apk-in-unity-hc3</link>
      <guid>https://dev.to/kiranjodhani/how-to-export-android-apk-in-unity-hc3</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbp4mg01sleanx81an5p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbp4mg01sleanx81an5p.png" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Making a game in Unity is one thing and building it successfully is another difficult task due to the errors one had to face while building. Do not worry, I list the steps, how I built my APK. So this would be a self answered question so as to help others in building their APK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Creating keystore and key&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First thing first make your game.&lt;br&gt;
Go to File &amp;gt; Build Settings in Unity editor.&lt;br&gt;
Select Platform as Android ( in build settings) if not done already.&lt;br&gt;
Click on Player Settings... button. Fill out Company Name, Product Name , Version and choose a Default Icon for your game.&lt;br&gt;
Now, click the little Andorid icon tab in the inspector pane. A tab will appear named Settings for Android.&lt;br&gt;
Under Settings for Android, you will find various options such as Icon, Resolution and Presentation, Splash Image, etc.&lt;br&gt;
Click on Publishing Settings. Tick mark Create a new keystore... . Then press Browse Keystore. A window will appear select location for your Keystore. and give filename as "yourkeystorename.keystore". Then set Keystore password and confirm it.&lt;br&gt;
Now, Create Key. In Alias by default, it is Unsigned (debug). Change that to Create a new key.&lt;br&gt;
A window will appear fill the Alias and password and confirm the password field. (NOTE : password has to be same as the keystore password we created in step no above).&lt;br&gt;
Then, press create key button. Now the key has been created and change the Alias from Unsigned (debug) to your key that you just created.&lt;br&gt;
Enter the password and you're ready to build your apk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Installing SDK and JDK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But I didn't have Android SDK installed. So Building apk showed ERROR: Unable to detect SDK in the selected directory.&lt;/p&gt;

&lt;p&gt;So I downloaded "Android Version 3.6.1 for Windows 64-bit" (749 MB) from this link: &lt;a href="https://developer.android.com/studio" rel="noopener noreferrer"&gt;https://developer.android.com/studio&lt;/a&gt;. For Installation, it's easy, just click next throughout the installation. (For me this also automatically installed JDK)&lt;br&gt;
Now set the SDK and JDK location in Unity. Go to Edit&amp;gt;Preferences&amp;gt;External Tools.&lt;br&gt;
Browse and choose the location where SDK is installed and Tick the Use embedded JDK check-box.&lt;br&gt;
To know where Andoird SDK is located, steps are :&lt;br&gt;
Open Up Android Studio, and then Go to 1. Configure 2.Project Defaults 3.Project Structure there you have SDK location.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3: Fixing the ERROR: Unable to detect SDK in the selected directory. (Even when SDK is installed)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even After SDK was installed it was showing the same ERROR: Unable to detect SDK in the selected directory.&lt;/p&gt;

&lt;p&gt;I noticed that the in the SDK location "tools" named folder was missing.&lt;br&gt;
If it is not missing then I would recommed deleting it.&lt;br&gt;
Fix it by downgrading the android sdk tool version.&lt;/p&gt;

&lt;p&gt;The steps : .&lt;/p&gt;

&lt;p&gt;Delete android sdk "tools" folder : [Your Android SDK root]/tools -&amp;gt; tools&lt;br&gt;
Download SDK Tools: &lt;a href="http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip" rel="noopener noreferrer"&gt;http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip&lt;/a&gt;&lt;br&gt;
Extract that to Android SDK root&lt;br&gt;
Build your project&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Additional Build problems&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hopefully, your APK should be built without any errors.&lt;/p&gt;

&lt;p&gt;But during the build, the APK it was stuck at "building gradle project". To fix that ensure that you've set the keystore and key in the publishing settings.&lt;/p&gt;

&lt;p&gt;After all this I was finally able to build my APK. :'-)&lt;/p&gt;

&lt;p&gt;Hope this all helped, if you have any suggestions and fixes for problem related to building an APK please post it here so that others can also take help from it.&lt;/p&gt;

&lt;p&gt;The Motivation behind this post was to save all the work at one place that one had to do while building an APK.&lt;/p&gt;

</description>
      <category>community</category>
      <category>gratitude</category>
    </item>
    <item>
      <title>Unity Interview Questions</title>
      <dc:creator>Kiran Jodhani</dc:creator>
      <pubDate>Mon, 05 Dec 2022 12:47:09 +0000</pubDate>
      <link>https://dev.to/kiranjodhani/unity-interview-questions-101a</link>
      <guid>https://dev.to/kiranjodhani/unity-interview-questions-101a</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpf4q83xwg57ubz403s8z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpf4q83xwg57ubz403s8z.png" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this, I am going to list some of the very commonly asked interview questions for unity developer profile.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Unity Engine Specific Question :&lt;/li&gt;
&lt;li&gt;Difference between Update,Fixed Update and Late Update.&lt;/li&gt;
&lt;li&gt;What is Prefabs in Unity 3D?&lt;/li&gt;
&lt;li&gt;What is the use of AssetBundle in Unity?&lt;/li&gt;
&lt;li&gt;What is difference between Resources and StreamingAssets Folder.&lt;/li&gt;
&lt;li&gt;What is Batching and what is the use of Batching?&lt;/li&gt;
&lt;li&gt;Difference between Destroy and DestroyImmediate unity function&lt;/li&gt;
&lt;li&gt;Difference between Start and Awake Unity Events&lt;/li&gt;
&lt;li&gt;What is the use of deltatime?&lt;/li&gt;
&lt;li&gt;Is this possible to collide two mesh collider,if yes then How?&lt;/li&gt;
&lt;li&gt;Difference between Static and Dynamic Batching.&lt;/li&gt;
&lt;li&gt;What is the use of Occlusion Culling?&lt;/li&gt;
&lt;li&gt;How can you call C# from Javascript, and vice versa?&lt;/li&gt;
&lt;li&gt;What is Dot product and Cross product?&lt;/li&gt;
&lt;li&gt;What is Normal Vector ? and what is Unit Vector ?&lt;/li&gt;
&lt;li&gt;What are the common ways to optimize 2D project ?&lt;/li&gt;
&lt;li&gt;What is Layer ? What are the different ways it is being used.&lt;/li&gt;
&lt;li&gt;How to optimize 3d project?&lt;/li&gt;
&lt;li&gt;What is Addressable Asset System?&lt;/li&gt;
&lt;li&gt;What is ECS ( Entity Component System)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I will keep updating this post&lt;/p&gt;

&lt;p&gt;If you know any other question, please feel free to write down in the comment section. :)&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Most Essential Skills For Unity Game Developers</title>
      <dc:creator>Kiran Jodhani</dc:creator>
      <pubDate>Thu, 01 Dec 2022 11:28:56 +0000</pubDate>
      <link>https://dev.to/kiranjodhani/most-essential-skills-for-unity-game-developers-4ana</link>
      <guid>https://dev.to/kiranjodhani/most-essential-skills-for-unity-game-developers-4ana</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HXFRTYju--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nrcm8gkdcdmua8wdt4he.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HXFRTYju--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nrcm8gkdcdmua8wdt4he.jpeg" alt="Unity3D" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unity developers used to be more of a description for a skill set than a title. Unity developers were often consigned to the world of independent development, since they wore too many crowns in development to be able to agree on a single job description. It has been considered the new normal to hire Unity Developers for a variety of tasks in prominent sectors. This post emphasises four key skills that each unity developer should have. Take a look at these!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Skill to use the Asset Store correctly
&lt;/h2&gt;

&lt;p&gt;Multiplication of asset flip is brought about by the use of the asset store. Most developers tend to acquire or buy their assets from the Asset Store and use them for putting their game together. Also, the non-developers have grasped the spirit since they are aware of Asset Store and other common assets used by the flippers. However, most of these developers still don’t understand how to use Asset Store successfully. They don’t understand that these assets work similarly to DOTween, and they should be used perfectly.&lt;/p&gt;

&lt;p&gt;What is Asset Store? This is generally a powerful object designed for developers. It is to be applied stages of production. This tool should be used thoughtfully for great perfection. The essential point why asset store is applied in the production is to prevent wheel recreation. &lt;/p&gt;

&lt;p&gt;In comparison to writing a script from scratch and downloading assets, Most developers would consider the asset since its time consuming unlike spending days on a single script. You would better spend hours doing something else and download the available asset.If you need to acquire a unique animation, consider doing all the characters or leave the work for the mocap library.Furthermore, ensure that all the things being downloaded from the asset store are of service to the project you are working on to get the right results.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Pre-production and Scoping
&lt;/h2&gt;

&lt;p&gt;One of the most important things that most developers strive for is an accomplishment. Unity development is reliant on pre-production and scoping in this scenario. Furthermore, constantly releasing items is a fantastic indicator of developer unity. One of the project killers should be featured. The most effective approaches to reduce the impacts of feature creep are to create a production map and a project charter. This should be done even before pre-production changes are made. At this point, one must determine what they want as their final output.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Programming knowledge (C#)
&lt;/h2&gt;

&lt;p&gt;To create incredible and complex projects, one needs to understand how coding is done in C#. Any developer can easily do the programming despite having great guidelines on the ground, like Unity’s Visual Scripting tool around. Scripting in C# can be done by tinkerers, artists, old, young, or you. Even if one has no job related to it, the critical part is to understand how the whole stuff works. This will help you forward your ideas to the programmers effectively by conversing in their language. Generally, programming is for everyone interested in learning how to script in C#.&lt;/p&gt;

&lt;p&gt;In most cases, people who find it enjoyable and easier are individuals with high creativity levels. Learning the language used in scripting and how to use it defines how you can grasp certain rules and think from a different perspective. All you need to perfect your skills on the same is willingness and patience. Starting small and advancing slowly while creating a unique version is all you need to make a good script. Knowing how to create scripts that are easy to repurpose and reuse makes you qualify as an agile and efficient programmer. Take time to build a system that will make you innovative and super ambitious. The developers have been of great help in coming up with incredible skills for efficient programming.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Keep yourself updated with the latest gaming trends
&lt;/h2&gt;

&lt;p&gt;A focus on the future is one of the essential skills, and surprisingly, it is cultivated by few developers. When you think of different places where unity skills can be applied, then that will be historic. Also, put your focus on new production industries to realize where your engine can perform. From medical and industrial sectors to film and animation industries, you can prove that unity is taking over the entertainment media in molding the next generation. &lt;/p&gt;

&lt;p&gt;Securing jobs for the future is one of the best things that unity developers have done. With the development of new technology, most artists and programmers will find something new to work on. Moreover, unity has been embraced with numerous industries as their object of choice. This has given the unity developers a free pass to different industries. These industries are eager to witness their creativity.&lt;/p&gt;

&lt;h2&gt;
  
  
  To summarise
&lt;/h2&gt;

&lt;p&gt;Working hard towards an improvement is something that most unity developers should focus on. This will help create a positive impact on their skills. Technology keeps on developing, and maybe in 4 to 5 years, you would have created a huge difference. Accepting that you are always a student will help you gain a lot in different fields as a unity developer. Consider working to develop a new feature and how you can refine the existing engines. This will help secure jobs for the future. Sharpen your skills in unity developing and become one of the best unity developers.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>csharp</category>
      <category>unity3d</category>
    </item>
  </channel>
</rss>
